我试图理解为什么满足if条件时python打印false的原因。我想念什么?请指教
s
Out[147]: '936100'
if int(s[0:4]) == 9361 | 9363:
print "true"
else:
print "false"
false
int(s[0:4])
Out[149]: 9361
答案 0 :(得分:2)
这里发生了一些事情。让我们一次遍历它们。
首先,存在Python的操作顺序问题。在比较|
运算符之前先评估按位运算符==
。换句话说,if int(s[0:4]) == 9361 | 9363
行等效于if int(s[0:4]) == (9361 | 9363)
。
另一方面,我怀疑|
不是您打算在此处使用的内容。在这种情况下,|
是bitwise or运算符,而不是逻辑或。换句话说,它采用的是9361和9363的按位或,即9363。在这种情况下,您应该使用or
关键字,如下所示:
if int(s[0:4]) == 9361 or int(s[0:4]) == 9363:
不幸的是,如果不进行多次测试,就无法查看某物是否等于一个物体或另一个物体。
如果您希望避免这样做,您可以做的一件事就是查看集合{9361, 9363}
是否包含该值。
if int(s[0:4]) in {9361, 9363}:
答案 1 :(得分:1)
使用if int(s[0:4]) == 9361 | 9363
代替if int(s[0:4]) in {9361, 9363}
。
答案 2 :(得分:1)
|
是python中的按位或运算符。逻辑OR
是使用python中内置的or
完成的。
s = '936100'
if (int(s[0:4]) == 9361) or (int(s[0:4]) == 9363):
print('true')
else:
print('false')
# true
9361 | 9363 = 9363
答案 3 :(得分:1)
if int(s[0:4]) == 9361 or int(s[0:4]) == 9363:
print("true")
else:
print("false")
可能就是您想要的。
另外,请注意:
>>> x = 9361 | 9363
>>> x
9363