← Все вопросы

Как развернуть число задом наперёд (1234 → 4321)?

Задан 5 месяцев назад422 просмотров4 ответа
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 месяцев назад

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект