为什么以下在Python中评估为False?
6==(5 or 6)
False
'b'==('a' or 'b')
False
答案 0 :(得分:2)
第一个表达式首先评估(5 or 6)
,评估结果为5
,因为5
是真实的。 5
不等于6
,因此返回False
。
第二个表达式首先评估('a' or 'b')
,其评估结果为'a'
,原因与上述相同。 'a'
不等于'b'
,因此返回False
。
解释这个问题的一个很好的例子是尝试将假名值作为6 == ([ ] or 6)
或6 == (None or 6)
或表达式的第一部分。这两个都将返回true,因为or语句将评估为truthy值(在每种情况下都是6
)。
有两种方法可以创建我认为你想要的语句。第一种方法是使用in
6 in (6,5)
。第二种方法是将布尔表达式扩展为读取(6 == 5) or (6 == 6)
。这两个都将返回True
。
答案 1 :(得分:0)
首先评估括号内的条件。所以
6==(5 or 6)
评估为
6==(5) # since 5 != 0 (True), the second operand is not evaluated
是False
。第二个也是如此。 ('a' != None
)
答案 2 :(得分:-1)
尝试:
>>>6 == (6 or 5)
True
发生了什么?尝试:
>>5 or 6
5
我不完全确定为什么" 5或6"评估为5,但我会尝试以不同的方式编写该表达式。
答案 3 :(得分:-1)
但有一点需要注意:
>> 5 == (0 or 5)
True
因为0不值得,所以括号结果为5.