2016-09-21 96 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 ... –