2016-09-21 3 views
-3

enter image description herePython retourne mauvaise table de vérité pour l'implication logique

J'ai mis en œuvre l'implication ci-dessus en Python, mais il ne retourne pas les résultats escomptés:

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

Mon code python est:

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))) 

Je ne comprends pas la contradiction ici. Aucun n'implique Faux n'est-ce pas? Et pourquoi ne pas imprimer Vrai comme il se doit?

+6

'else: True' devrait être' else: return True'. Comme ça ne fait rien. – RemcoGerlich

+3

On dirait que vous pouvez remplacer l'implémentation de 'implique' par la valeur' True', si tous les résultats sont supposés être 'T'. – deceze

+0

Merci les gars, cette fonction a été fournie dans un exercice donc je n'ai pas regardé deux fois dedans! –

Répondre

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

Votre erreur est dans les deux dernières lignes, si! Un, vous ne retournez pas une valeur spécifique, de sorte que le résultat est None. Vous voulez:

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

@ PM2Ring Bien sûr, vous avez raison. Trop de C# et Java ... –