在Python中,0 ==(1或0),返回False。为什么不返回 True? [重复]

问题描述 投票:0回答:3

我想看看一个函数是否返回一个整数,其值应该是 1 或 0。

0 == (1 or 0)

0 等于 1 或 0,这听起来应该是真的,但事实并非如此。

为什么?以及如何正确地做我想做的事情?

python equality boolean-logic
3个回答
6
投票

0 == (1 or 0)
被解析为这棵树:

  ==
 /  \
0    or
    /  \
   1    0

1 or 0
结果为
1
,因为
or
返回两个操作数的第一个真值(并且
1
为真值)。

之后,我们只剩下

0 == 1
,这显然是错误的。

想要做的是检查

0
是否是您可以通过序列检查执行的值之一:
0 in (0, 1)


4
投票

1 or 0
计算结果为 1,并且由于 0 不等于 1,因此表达式为 false。

我怀疑你想做的是

0 == 0 or 1 == 0


0
投票

您正在使用括号。这意味着你正在强行优先。所以Python将首先评估表达式

1 or 0
,它是1。然后它会评估下一部分,
0 == 1
,它是假的。

© www.soinside.com 2019 - 2024. All rights reserved.