比较运算符为|赋予不同的值&安培;比较和或 - Python

时间:2017-09-27 11:40:38

标签: python conditional-operator comparison-operators

我对比较运算符感到困惑。例如,

 10 or 20 == 20
 # output, expected True
 10

  10 | 20 == 20
 (10 | 20) == 20
 (10 or 20) == 20

所有3行代码都给出'False',但我期待'True'。

 10 or 20 == 20
 # output gives 10, but was expecting True
 10

另一个例子:

 10 and 20 > 2
 # output is as expected
 True

 (10 and 20) > 2
 True

 (10 & 20) > 2
 # output gives False, but was expecting True
 False

最后,如果我这样做:

 10 or 20 > 100
 #output is 10. No idea why
 10
 3 or 8 < 200
 3

任何人都可以帮助消除这种混乱吗?非常感谢花时间阅读我的困惑!我正在使用Python 3.6

2 个答案:

答案 0 :(得分:2)

这两个条件运算符都将返回它们必须评估的最后一个条件或值。

or运算符判断其中任何一个条件是否为真,并返回它评估的最后一个条件。由于10在Python(或任何其他语言)中被视为True,因此该语言甚至不会通过第二个条件(或值)并返回第一个值。而在and的情况下,两个条件都必须为真,如果两个条件都是真的,则返回第二个值,如果不是,则返回第二个值。

>>> True or False
True
>>> False or True
True
>>> True and False
False

# Similarly
>>> 10 or 20
10
>>> 10 and 20
20
>>> 0 or 10
10
>>> 0 and 10
0

此行为还为某些b = a if a else c行为提供了方便的替代方法。

答案 1 :(得分:0)

类似于真或假的情况:

>>> 20 or 10
20
>>>(20 or 10) == 10 
False
>>>(20 or 10) == 20
True

这是因为它将第一个值设为true,接下来设为false,当你传递true或false时,你得到的是同样的,你得到20,这实际上代表了真实。 希望这可以帮助。