在python 中
1000 or 10001
的结果是1000
11 or 1000 or 10001
或11 的结果
如何为1000 or 10001
获取10001
,为11 or 1000 or 10001
获取11001
?
在python中,您可以通过int.进行逻辑运算(或、和,而不是etc(
要将二进制数字符串转换为int,可以这样做,
int('11', 2)
然后,二进制数11
将被转换为基数为2的int。因此,您将得到3
。
回到你的问题上来,
您需要预成型:1000 or 10001
要做到这一点,首先将这些二进制数转换为int,并对这些数字应用逻辑或运算符。会是这样的
bin(int('1000', 2) | int('10001', 2)) # '0b11001'
上述结果中的0b
表示它是一个二进制字符串。
类似地,对于11 or 1000 or 10001
,
bin(int('11', 2) | int('1000', 2) | int('10001', 2)) # 0b11011
Python的工作与预期一样。
>>> bin(0b1000 | 0b10001)
'0b11001'
>>> bin(0b11 | 0b1000 | 0b10001)
'0b11011'
但是说
>>> 1000 or 10001
1000
完全不同。它查看两个整数,因为第一个整数等于True(而不是0(,所以它被返回。如果它不是真的,那么将在或运算符之后返回整数值。这个功能非常方便;在python中,你可以这样说
>>> myvalue =["Hello world"]
>>> myvalue and myvalue[0] or "Empty list"
'Hello world'
>>> myvalue = []
>>> myvalue and myvalue[0] or "Empty list"
'Empty list'
因为在这个操作中,空列表等于False。