/
Вопросы и ответы
/
Python
/

Как перевернуть число с помощью функции в Python?

Как перевернуть число с помощью функции в Python?

4 года назад

Andrey Moshkov

Ответы

2

Самый простой способ перевернуть число это превратить его в строку и с помощью срезов перевернуть. А после поменять тип данных снова на число.

1
2
3
4
5
number = 12345
number_as_str = str(number)
reversed_number = number_as_str[::-1]
new_number = int(reversed_number)
print(new_number)# => 54321

4 года назад

Ilia Kaziamov

0

Быстрее всего перевернуть число через строку: превратить его в строку, развернуть срезом [::-1] и вернуть обратно в число:

1
2
n = 12345
print(int(str(n)[::-1]))  # => 54321

Срез [::-1] идёт по строке с шагом −1: с конца в начало.

Функция с отрицательными числами

Минус при развороте окажется в конце, и int() упадёт с ошибкой. Разворачивайте модуль числа и возвращайте знак:

1
2
3
4
5
6
def reverse_number(n):
    sign = -1 if n < 0 else 1
    return sign * int(str(abs(n))[::-1])

print(reverse_number(12345))  # => 54321
print(reverse_number(-120))   # => -21

Нули в конце пропадают: 1200 превратится в 21, потому что у числа 0021 ведущих нулей нет. Если нули нужны, оставьте результат строкой: str(1200)[::-1] → '0021'.

Без строк, арифметикой

Так решают задачи, где строки использовать нельзя:

1
2
3
4
5
6
7
8
9
10
def reverse_number(n):
    sign = -1 if n < 0 else 1
    n = abs(n)
    result = 0
    while n > 0:
        result = result * 10 + n % 10   # приписываем последнюю цифру
        n //= 10                        # отбрасываем последнюю цифру
    return sign * result

print(reverse_number(12345))  # => 54321

Как это работает для 123:

Шагn % 10resultn
13312
22321
313210

Через reversed

1
2
n = 12345
print(int("".join(reversed(str(n)))))  # => 54321

Число-палиндром

Число читается одинаково с обеих сторон, если перевёрнутое равно исходному:

1
2
3
4
5
def is_palindrome(n):
    return str(n) == str(n)[::-1]

print(is_palindrome(12321))  # => True
print(is_palindrome(12345))  # => False

Перевернуть список чисел

Порядок элементов списка меняют так:

1
2
3
numbers = [1, 2, 3]
print(numbers[::-1])   # => [3, 2, 1]
numbers.reverse()      # разворачивает сам список

Срезы, циклы и функции разбирают в бесплатном курсе «Основы Python».

18 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845