i = 200
j = 201
if i == 200 | j == 201:
print "Hi"
else:
print "No"
它应该打印“嗨”,对吗?那么为什么打印“不”?
答案 0 :(得分:2)
此处的问题实际上是运算符优先级之一,而不是使用按位|
而不是逻辑or
; True | True
和True or True
会得到相同的结果。
根据Python docs,比较==
的优先级低于按位|
,因此您的条件表达式评估为:
i == (200 | j) == 201
这是假的。如果您添加了括号以澄清:
(i == 200) | (j == 201)
你会得到你期望的行为。
但是,正确的做法是使用or
。使用or
是有效的,因为没有括号,因为布尔运算符的优先级低于比较。此外:
TypeError
答案 1 :(得分:0)
在Python中|
和&
是按位运算符,它们进行位计算。
另一方面,and
和or
是逻辑(布尔)运算符。
答案 2 :(得分:0)
|是一个按位运算符,在python脚本中进行位计算 使用此
i = 200
j = 201
if i == 200 or j == 201:
print "Hi"
else:
print "No"