Похоже, вы не совсем понимаете, как работает система счисления. Вот исправленная версия вашего кода:
def decimal(n, b):
result = ""
while n > 0:
result = str(n % b) + result
n = n // b
return result
Система счисления - это просто представление числа. Изменение системы не влияет на значение переменной.
Так что я перечислю несколько ошибок, которые вы допустили в своем коде:
- Тип возвращаемого значения. Как я уже упоминал ранее, мы должны вернуть представление числа, поэтому вы не можете обработать представление в виде другого числа. Это возможно, но это разрушает логику c. Я бы порекомендовал вам продолжить с
str
; - L oop условие. В вашем коде вы используете регулярное деление на
10
, что полностью нарушает логику c функции, потому что обычно она должна делиться на базу системы счисления (значение переменной b
). Но это не единственная проблема. Возвращение n / 10
будет равно float
значению, которое теоретически никогда не будет равно 0
. Единственная причина, по которой ваш l oop остановлен, - это то, как python работает с плавающей точкой (после некоторого количества итераций n
будет округлено до 0.0
).