Основная причина, по которой ваша программа не «работает», заключается в том, что вы неправильно используете функции и неизменяемые объекты. Числовые объекты являются неизменяемыми, это означает, что вы не можете изменить значение числового объекта в Python, вам нужно вернуть новое число. И когда вы делаете ChangeHex(n)
, вы передаете значение n
(т.е. числовой объект) в функцию - она не знает, что существует переменная, которая была связана с этим числом. И, таким образом, когда вы изменяете локальную переменную, например n
, переменная в вызывающей стороне не изменяется.
Вы бы хотели, чтобы функция возвращала новое значение, а не пыталась изменить переданное (что на самом деле невозможно). Посмотрите инструкцию возврата и используйте значение ChangeHex(n)
. Подсказки:
result += ChangeHex(n)
return result
Возможно, вы хотите вернуть то, что печатаете, но я не могу точно сказать.
То же самое относится к операциям. Так как числа неизменны, операции над числами не могут изменить число, и вам необходимо присвоить номер переменной. n % 16
ничего не делает, вам нужно присваивание, как n = n % 16
или n %= 16
.