逻辑python比较,在应该为true时计算False

逻辑python比较,在应该为true时计算False,python,Python,为什么在Python中,下面的计算结果为False 6==(5 or 6) False 'b'==('a' or 'b') False 第一个表达式首先计算(5或6),其计算结果为5,因为5是真实的5不等于6,因此它返回False 第二个表达式首先计算('a'或'b'),其计算结果为'a',原因与上述相同'a'不等于'b',因此它返回False 解释这一点的一个很好的例子是尝试将一个假值作为or表达式的第一部分,如6==([]或6)或6==(无或6)。这两个都将返回true,因为or语句将计

为什么在Python中,下面的计算结果为False

6==(5 or 6)
False

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

第一个表达式首先计算
(5或6)
,其计算结果为
5
,因为
5
是真实的
5
不等于
6
,因此它返回
False

第二个表达式首先计算
('a'或'b')
,其计算结果为
'a'
,原因与上述相同
'a'
不等于
'b'
,因此它返回
False

解释这一点的一个很好的例子是尝试将一个假值作为or表达式的第一部分,如
6==([]或6)
6==(无或6)
。这两个都将返回true,因为or语句将计算为truthy值(在每种情况下都是
6


我认为有几种方法可以创建您想要的语句。第一种方法是在中使用
,就像在(6,5)
中使用
6一样。第二种方法是将布尔表达式扩展为如下所示的
(6==5)或(6==6)
。这两个函数都将返回
True

首先计算括号内的条件。所以

6==(5 or 6)
评估为

6==(5) # since 5 != 0 (True), the second operand is not evaluated
这是
False
。第二个也一样。(
'a'!=None

试试:

>>>6 == (6 or 5)
True
发生什么事了?尝试:

>>5 or 6
5
我不完全确定为什么“5或6”的计算结果为5,但我会尝试用不同的方式编写该表达式。

但有一个警告:

>> 5 == (0 or 5)
True

因为0不符合真理,所以括号中的结果是5

实际上,
5或6
的计算结果是
5
。这个网站的问题是,人们通常只是为了得到分数而愤怒地回答。无论如何,我删除了我的否决票。我想这里的问题是为什么
5或6
的计算结果是
5
。当然,其余的都是多余的,根本不需要答案。@nbro:这回答了我的问题。我有一刻忘了先评估右边。@Jack_of_All_Trades然后,我必须诚实地说,我需要否决你的问题,因为你的问题非常基本,如果你有一点编程经验(我懂任何语言,我也懂一些语言),就很容易解决。@nbro:Ya,问了这个问题后,我觉得自己很愚蠢。我早就知道了。你为什么认为这是真的?似乎你想在(5,6)
中做
6,但不知道正确的语法,你把责任归咎于语言。@VincentSavard:你说得对。这一次,我开始从数学意义上思考。它取or表达式中的第一个真值,因此如果你做了
None或5
[]或5
,你也会得到
5
以及
运算符。