Python总是在布尔比较中返回False

时间:2015-02-12 15:41:06

标签: python python-3.x boolean

这是我的代码。无论我为A和B输入什么,它总是返回false ..

def TorF():
    for i in range(10):
        A = input('A: ')
        B = input('B: ')
        print((A and not B) or (B and not A))

TorF()

结果:

>>> 
A: True
B: False
False
A: True
B: True
False
A: False
B: True
False

1 个答案:

答案 0 :(得分:1)

在3.X中,input返回一个字符串,因此您实际上并没有在bools上执行布尔逻辑。它始终评估为False,因为not s对于任何非空字符串False都是s;对于s and False的任何值,Falses;当然False or FalseFalse。尝试事先明确转换A和B的类型。

def TorF():
    for i in range(10):
        A = input('A: ').lower() == "true"
        B = input('B: ').lower() == "true"
        print((A and not B) or (B and not A))

TorF()

结果:

A: True
B: False
True
A: True
B: True
False
A: False
B: True
True