2016-09-21 12 views
-3

enter image description herePython gibt falsche Wahrheitstabelle für logische Implikation

ich die oben Implikation in Python implementiert haben, aber es gibt nicht die erwarteten Ergebnisse:

True  True None 
    True  False None 
False  True True 
False  False None 

Mein Python-Code ist:

def implies(a,b): 
    if a: 
     return b 
    else:True 
    return 
for p in (True, False): 
    for q in (True, False): 
     print("%10s %10s %s" %(p,q,implies((p or q) and (not p), q))) 

Ich verstehe den Widerspruch hier nicht. Keine bedeutet falsch, nicht wahr? Und warum drucken Sie nicht True, wie es sollte?

+6

'else: True' sollte' sonst: return True' sein. Wie es ist, tut es nichts. – RemcoGerlich

+3

Sieht so aus, als ob Sie die Implementierung von 'implicts' durch den Wert' True' ersetzen können, wenn erwartet wird, dass jedes Ergebnis 'T' ist. – deceze

+0

Danke Jungs, diese Funktion wurde tatsächlich in einer Übung zur Verfügung gestellt, so dass ich nicht zweimal hinein geschaut habe! –

Antwort

2
def implies(a,b): 
    if a: 
     return b 
    else:True 
    return 

Ihr Fehler ist in den letzten beiden Zeilen, wenn! A, Sie sind nicht einen bestimmten Wert zurückkehrt, so dass das Ergebnis None ist. Sie möchten:

def implies(a,b): 
    if a: 
     return b 
    else: 
     return True 
+0

@ PM2Ring Natürlich haben Sie Recht. Zu viel C# und Java ... –