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

Python always returning False in the boolean comparison

这是我的代码。无论我为 A 和 B 输入什么,它总是 returns 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

在 3.X 中,input returns 是一个字符串,因此您实际上并没有对布尔值执行布尔逻辑。它总是评估为 False 因为 not s 对于任何非空字符串 s 都是 Falses and False 对于任何 s 的值都是 False;当然 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