Следующий блок Python должен добавить две строки двоичных чисел.Переменные 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
В начале каждой итерации цикла их значения равны ''
и * 1007.* соответственно.Их значения изменяются во время блока цикла, но они сбрасываются.
Я пытался изменить их на переменные класса (self.res_str
и self.carry
) с теми же результатами.
Что вызываетэти переменные должны быть сброшены?
edit: забыл использовать вывод zfill