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

时间:2021-06-19 13:50:42

标签: python equals boolean-logic

我正在尝试查看一个函数是否返回一个整数,该整数的值应该是 1 或 0。

0 == (1 or 0)

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

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

3 个答案:

答案 0 :(得分:5)

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

  ==
 /  \
0    or
    /  \
   1    0

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

之后,我们只剩下 0 == 1,这显然是错误的。

想要做的是检查 0 是否是您可以通过序列检查完成的值之一:0 in (0, 1)

答案 1 :(得分:4)

1 or 0 的计算结果为 1,由于 0 不等于 1,因此表达式为假。

我怀疑您正在尝试做的事情类似于 0 == 0 or 1 == 0

答案 2 :(得分:0)

您正在使用括号。这意味着您正在强制优先考虑它。所以python将首先评估表达式1 or 0,它是1。然后它会评估下一部分,0 == 1是假的。