Нужно вывести в print изначально введённое значение n

Пишется код для перевода числа из десятичной системы счисления в любую другую. Вот такой:

def y():
    n = int(input('Число по основанию 10: '))
    a = int(input('Основание системы, в которую нужно перевести число: '))

    b = ''

    while n > 0:
        b = str(n % a) + b
        n = n // a

    print(n, ' по основанию', a, 'равно ', b)

y()
while True:
    flag = input('Введите 1, чтобы посчитать ещё: ')

    if flag == '1':
        y()
    else:
        break

В целом всё работает, но команда print должна выводить изначально введённое значение n, но она всегда выводит значение аргумента n равным 0:

0 по основанию .. равно ..

Ответы (1 шт):

Автор решения: MarianD

В этой части кода

while n > 0:
    b = str(n % a) + b
    n = n // a

вы сначала изменяете значение в переменной n, пока цикл не завершится - и он совершится, когда оно будет равно нулю.

Затем вы этот нуль выводите:

print(n, ' по основанию', a, 'равно ', b)

Чтобы этого не произошло, сохраните оригинальное значение переменной n в другой переменной и выводите его. Например так:

orig_n = n
while n > 0:
    b = str(n % a) + b
    n = n // a

print(orig_n, ' по основанию', a, 'равно ', b)
→ Ссылка