← Все вопросы
Как развернуть число задом наперёд, чтобы 1234 стало 4321, без превращения в строку?
5
Знаю, что строку можно перевернуть срезом, но в задаче просят именно работать с числом через деление и остаток, без строк. Как из 1234 получить число 4321? Понимаю, что % 10 даёт последнюю цифру, а дальше затык.
2 ответа
10
✓ Принятый ответ — помог автору
Идея: отрываешь по одной последней цифре через % 10, а к результату «пристраиваешь» её, умножая старый результат на 10.
n = 1234
result = 0
while n > 0:
digit = n % 10 # последняя цифра
result = result * 10 + digit
n //= 10 # убрали последнюю цифру
print(result) # 4321
На каждом шаге result сдвигается влево (*10) и добавляет очередную цифру. Это классический приём, его же используют, чтобы проверять числа на палиндром.
3
Осторожно с числами, оканчивающимися на ноль: 1200 перевернётся в 21, потому что ведущие нули в числе не хранятся. Если нужны именно символы с нулями — тогда без строки не обойтись.
Ваш ответ
Войдите, чтобы ответить на вопрос.