Python c[i] = int(n1[i]) + int(n2[i]) + d TypeError: 'reversed' object is not subscriptable
Мне нужно реализовать алгоритм сложения длинных чисел на Python. Тут совсем новичок и не понимаю некоторых особенностей. Я получаю ошибку:
c[i] = int(n1[i]) + int(n2[i]) + d
TypeError: 'reversed' object is not subscriptable
Почему к перевернутой строке нельзя обращаться по индексу? Сам код:
number1 = input('Введите первое длинное число = ')
number2 = input('Введите второе длинное число = ')
l = max(len(number1), len(number2))
n1 = reversed(number1)
n2 = reversed(number2)
d = 0
c = ''
for i in range(0, l, 1):
c[i] = int(n1[i]) + int(n2[i]) + d
if c[i] > 9:
c[i]-=10
d = 1
else:
d = 0
print(reversed(c))
Новый код:
def rev(line):
line = list(line)
l = len(line) - 1
for i in range(0, l // 2, 1):
tmp = line[i]
line[i] = line[l - i]
line[l - i] = tmp
s = ''.join(line)
return s
number1 = input('Введите первое длинное число = ')
number2 = input('Введите второе длинное число = ')
l = max(len(number1), len(number2))
number1 = rev(number1)
number2 = rev(number2)
if len(number2) < l:
while len(number2) != l:
number2+='0'
print(number1)
print(number2)
d = 0
c = ''
for i in range(l):
s = 0
s = int(number1[i]) + int(number2[i]) + d
if s > 9:
s -= 10
d = 1
else:
d = 0
c += str(s) # 3
if d > 0: # 4
c += str(d)
print(c[::-1])
Источник: Stack Overflow на русском