@justSMTH

Почему эта строчка кода не работает?

Данная програма должна складывать числа в любой системе исчесления вплоть до 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'
  • Вопрос задан
  • 89 просмотров
Пригласить эксперта
Ответы на вопрос 1
15432
@15432
Системный программист ^_^
Num1 - строка, неизменяемый объект, передается по значению. В этой строчке вы меняете только локальный Num1, который действует "внутри" функции sum

а ещё у вас несколько других ошибок, которые вы увидите, сложив 99 и 1
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы