← Все вопросы
Как развернуть число задом наперёд (1234 → 4321)?
10
Нужно перевернуть само число, а не строку: из 1234 получить 4321. Желательно без перевода в строку, чисто математикой. Как это делается?
4 ответа
18
Математикой: на каждом шаге отрываешь последнюю цифру через % 10, приклеиваешь её к результату, а само число делишь на 10 нацело.
def reverse_num(n):
res = 0
while n > 0:
res = res * 10 + n % 10
n //= 10
return res
print(reverse_num(1234)) # 4321
Это классический приём «разбор числа по цифрам», его же используют для суммы цифр, проверки палиндрома и т.п. Для отрицательных оберни знак отдельно.
Олег Камаров res*10 + цифра — вот это место всегда забываю, спасибо 🙏 · 5 месяцев назад
7
Если можно строкой, то просто int(str(n)[::-1]). Но чисто математически — вариант выше правильный.
4
int(str(n)[::-1]).
-4
n[::-1]
Ильнур Сахапов так нельзя, n это int, к нему срез не применить — будет TypeError. Сначала str(n) · 5 месяцев назад
Ваш ответ
Войдите, чтобы ответить на вопрос.