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
都是 False
; s and False
对于任何 s
的值都是 False
;当然 False or False
是 False
。尝试事先显式转换 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
这是我的代码。无论我为 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
都是 False
; s and False
对于任何 s
的值都是 False
;当然 False or False
是 False
。尝试事先显式转换 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