我试图理解为什么 python 在满足 if 条件时打印 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
请您参考如下方法:
这里发生了一些事情。让我们逐一讨论。
首先是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}:
