以下python块应添加两个二进制数字字符串。每次循环时,变量:prepend
和res_str
都会重置为其初始值。
carry
在循环的每次迭代开始时,它们的值分别为class Solution:
def addBinary(self, a, b):
"""
:type a: str
:type b: str
:rtype: str
"""
if len(a) < len(b):
a.zfill(len(b))
elif len(a) > len(b):
b.zfill(len(a))
res_str = ''
carry = '0'
for asub, bsub in reversed(list(zip(a, b))):
print(res_str, carry)
if asub == '1' and bsub == '1':
res_str = '0' + res_str
carry = '1' + carry
elif asub == '1' or bsub == '1':
res_str = '1' + res_str
carry = '0' + carry
else:
res_str = '0' + res_str
carry = '0' + carry
print(res_str, carry)
if '1' in carry:
return self.addBinary(res_str, carry)
else:
return res_str
s = Solution()
s.addBinary('1', '11')
# 0
# 0 10
# 0
# 1 00
# 1
和''
。它们的值在循环块期间会更改,但会重置。
我尝试将它们更改为具有相同结果的类变量(0
和self.res_str
)。
是什么导致这些变量被重置?
编辑:忘记使用self.carry
的输出