Данная програма должна складывать числа в любой системе исчесления вплоть до 50 без перевода в 10 систему.
def plus1(Num1,Num2,base):
Num_Tab = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ+-/8=~!@#№$%^&?'
New_Num = ''
Num1 = Num1[::-1]
Num2 = Num2[::-1]
a = min(len(Num1),len(Num2))
i = 0
if len(Num1) < len(Num2):
Num1, Num2 = Num2, Num1
Dif = True
elif len(Num1) > len(Num2):
Dif = True
else:
Dif = False
def sum(Num1, Num2):
x = Num_Tab.find(Num1[i],0,base) + Num_Tab.find(Num2[i],0,base)
if x > base:
Num1 = Num1[:i] + Num_Tab[Num_Tab.find(Num1[i+1]) + 1] + Num1[i+1:] # это строчка кода не работает
return Num_Tab[x-base]
else:
return Num_Tab[x]
while a:
D = sum(Num1, Num2)
a-=1
New_Num = New_Num + D
i+=1
if Dif:
while i != max(len(Num1),len(Num2)):
New_Num = Num1[i] + New_Num
i+=1
return New_Num[::-1]
Эта строчка не работает по непонятным мне причинам, хотя в консоли когда я воспроизводил пообную ситуацию всё работает. Прокрутка кода в Python Tutor тоже ничего не дала. Вот, что выдаёт програма:
>>> plus1('123','321',10)
'444'
>>> plus1('123','391',10)
'414' # Должна выдать '514'