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

Для переворота числа в Python можно использовать несколько разных подходов в зависимости от того, какое именно поведение нужно и какие ограничения накладываются на задачу. Рассмотрим несколько способов, начиная с простых и заканчивая более сложными, с разбором каждого шага.

1. Переворачивание числа с использованием строк

Один из самых простых способов перевернуть число — это преобразовать его в строку, а затем применить методы работы со строками.

Алгоритм:

  1. Преобразуем число в строку.

  2. Переворачиваем строку (используя срез).

  3. Преобразуем строку обратно в число.

python
def reverse_number(num): # Преобразуем число в строку num_str = str(num) # Переворачиваем строку reversed_str = num_str[::-1] # Преобразуем обратно в число reversed_num = int(reversed_str) return reversed_num

Пример:

python
print(reverse_number(1234)) # Вывод: 4321 print(reverse_number(-5678)) # Вывод: -8765

Объяснение:

  • str(num) — преобразует число в строку.

  • [::-1] — срез строки, который берет её символы в обратном порядке.

  • int() — преобразует строку обратно в целое число.

Замечания:

  • Этот метод хорошо работает для целых чисел.

  • Если число отрицательное, знак минус будет в конце строки. Когда мы преобразуем строку обратно в число, знак автоматически возвращается в начало.

2. Переворачивание числа без использования строк

Если мы хотим перевернуть число, не преобразуя его в строку, можно использовать математический подход. Это будет полезно, если необходимо работать с числами и избегать операций с типом данных str.

Алгоритм:

  1. Извлекаем последнюю цифру числа с помощью операции деления на 10.

  2. Сохраняем эту цифру и добавляем её к результату.

  3. Повторяем процесс, пока число не станет равным нулю.

python
def reverse_number(num): is_negative = num < 0 num = abs(num) reversed_num = 0 while num > 0: digit = num % 10 # Извлекаем последнюю цифру reversed_num = reversed_num * 10 + digit # Переворачиваем число num //= 10 # Убираем последнюю цифру if is_negative: reversed_num = -reversed_num # Если исходное число было отрицательным return reversed_num

Пример:

python
print(reverse_number(1234)) # Вывод: 4321 print(reverse_number(-5678)) # Вывод: -8765

Объяснение:

  • num % 10 — извлекает последнюю цифру числа.

  • reversed_num * 10 + digit — создает новое число, переворачивая порядок цифр.

  • num // 10 — удаляет последнюю цифру из исходного числа (деление с округлением вниз).

  • Мы также проверяем, было ли исходное число отрицательным, и в случае необходимости возвращаем результат с минусом.

3. Переворачивание числа с использованием стека

Этот метод использует структуру данных «стек», что аналогично предыдущему подходу, но с использованием дополнительных структур данных.

Алгоритм:

  1. Извлекаем цифры числа, помещая их в стек.

  2. Строим новое число, вытаскивая цифры из стека.

python
def reverse_number(num): is_negative = num < 0 num = abs(num) stack = [] while num > 0: stack.append(num % 10) num //= 10 reversed_num = 0 while stack: reversed_num = reversed_num * 10 + stack.pop() if is_negative: reversed_num = -reversed_num return reversed_num

Пример:

python
print(reverse_number(1234)) # Вывод: 4321 print(reverse_number(-5678)) # Вывод: -8765

Объяснение:

  • Мы извлекаем цифры числа и помещаем их в стек.

  • Затем, с помощью stack.pop(), извлекаем цифры в обратном порядке и строим новое число.

  • Как и в предыдущем методе, проверяем знак числа.

4. Использование рекурсии

Если вы хотите решить задачу с помощью рекурсии, то можно сделать это следующим образом. Это может быть полезно для демонстрации концепции рекурсивных решений.

Алгоритм:

  1. Определим рекурсивную функцию для извлечения последней цифры.

  2. В каждой итерации рекурсии будем извлекать цифру и передавать оставшуюся часть числа.

python
def reverse_number(num, reversed_num=0): if num == 0: return reversed_num reversed_num = reversed_num * 10 + num % 10 return reverse_number(num // 10, reversed_num)

Пример:

python
print(reverse_number(1234)) # Вывод: 4321 print(reverse_number(-5678)) # Вывод: -8765

Объяснение:

  • Функция принимает два аргумента: исходное число и текущее перевёрнутое число (по умолчанию 0).

  • В рекурсивном шаге мы извлекаем последнюю цифру с помощью num % 10 и обновляем перевёрнутое число.

  • Рекурсивно уменьшаем число на одну цифру с помощью целочисленного деления num // 10.

  • Когда число станет равно 0, мы возвращаем перевёрнутое число.

Вывод

  • Если вам нужно быстро перевернуть число и вы не боитесь работать с типами данных str, то первый метод (строки) будет самым простым и понятным.

  • Если вам нужно работать без строк, то второй метод (математический) — лучший выбор.

  • Использование стека или рекурсии — это более сложные и «приближенные» способы для решения задачи, но они могут быть интересными с точки зрения практики.

Какой из методов вам кажется наиболее подходящим для вашей задачи?

Scroll to Top

Карта сайта