在python中使用OR将数字与一个或多个数字进行比较

时间:2019-01-22 23:23:51

标签: python

我试图理解为什么满足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

4 个答案:

答案 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