2016-09-21 51 views
-3

enter image description here的Python返回錯誤的真值表邏輯蘊涵

我已經用Python實現上述含義,但它並沒有返回預期的結果:

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

我的Python代碼:

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

我不明白這裏的矛盾。沒有意味着錯誤不是嗎?爲什麼不打印真的像它應該?

+6

'else:True'應該是'else:return True'。因爲它沒有做任何事情。 – RemcoGerlich

+3

看起來,如果每個結果都預計爲「T」,則可以用「True」值替換「implies」的實現。 – deceze

+0

謝謝大家,這個功能實際上是在練習中提供的,所以我沒有看兩次! –

回答

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

你的錯誤是在最後兩行,如果!一,不必返回一個特定的值,所以結果是None。 你想:

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

@ PM2Ring當然,你是對的。太多的C#和Java ... –