我对比较运算符感到困惑。例如,
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
答案 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,这实际上代表了真实。 希望这可以帮助。