我试图实现以下目标。我编写了代码或字符串的值,并计算字符串中的1的数量。
a='11001'
b='00111'
a and b
'00111'
a or b
11001
有人可以解释一下这是如何运作的。我期待的答案是,当我a and b
时,结果应为00001
,当我a or b
时,我应该11111
,逻辑{{1} }和and
。
我确实理解非空字符串在所有情况下都会产生True。所以我可以解释上面的行为,以为我不明白如何实现布尔or
和and
提前致谢。
答案 0 :(得分:1)
and
关键字无法正常运行。它的作用是:
None
,False
,0,空字符串,...)则返回它。在那里,'11001'
不是假的,因为它是一个非空字符串,所以'11101' and '00111'
返回第二个字符串。
也许你想使用按位和运算符&
进行按位运算?
>> 0b11001 & 0b00111
1
答案 1 :(得分:1)
and
和or
个关键字适用于布尔值。 python中的非空字符串是True
。
如果要执行位操作,可以使用以下内容:
>>> a='11001'
>>> b='00111'
>>> bin(int(a, 2) & int(b, 2))
'0b1'
>>> bin(int(a, 2) | int(b, 2))
'0b11111'
要计算或结果中1的数量,您可以使用count()
函数:
>>> bin(int(a, 2) | int(b, 2))[2:]
'11111'
>>> bin(int(a, 2) | int(b, 2))[2:].count('1')
5
答案 2 :(得分:1)
a='11001'
b='00111'
c = ''
案例"和":
for bit_1, bit_2 in zip(a, b):
if bit_1 == bit_2:
c += '1'
else:
c += '0'
案例"或":
for bit_1, bit_2 in zip(a, b):
if bit_1 == '1' or bit_2 == '1':
c += '1'
else:
c += '0'