逻辑python比较,当它应该为真时评估False

时间:2016-02-18 16:43:37

标签: python

为什么以下在Python中评估为False?

6==(5 or 6)
False

'b'==('a' or 'b')
False

4 个答案:

答案 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.