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

Вводится целое число. Вывести число, обратное введенному по порядку составляющих его цифр. Например, введено 3425, надо вывести 5243.

Решение задачи на языке программирования Python

Алгоритм:

  1. Найдем остаток от деления на 10 исходного (первого) числа. Тем самым получим последнюю его цифру. Запомним ее.
  2. Присвоим эту цифру новому (второму) числу-"перевертышу".
  3. Разделим нацело на 10 первое число. Тем самым избавимся от последней цифры в нем.
  4. Снова найдем остаток от деления на 10 того, что осталось от первого числа. Запомним цифру-остаток.
  5. Разделим нацело на 10 первое число. Избавимся от текущей последней цифры в нем.
  6. Умножим на 10 второе число. Тем самым увеличим его разрядность до двух и сдвинем первую цифру в более старший разряд.
  7. Добавим к полученному второму числу запомненную ранее цифру из первого числа.
  8. Будем повторять действия п. 4-7 пока первое число не уменьшится до нуля, т. е. пока не избавимся от всех его разрядов.
n1 = int(input("Введите целое число: "))

# Последнюю цифру первого числа переносим во второе
digit = n1 % 10
n2 = digit

# Избавляемся от последней цифры первого числа
n1 = n1 // 10

while n1 > 0:
    # находим остаток - последнюю цифру
    digit = n1 % 10
    # делим нацело - удаляем последнюю цифру
    n1 = n1 // 10
    # увеличиваем разрядность второго числа
    n2 = n2 * 10
    # добавляем очередную цифру
    n2 = n2 + digit

print('"Обратное" ему число:', n2)

Примеры выполнения кода:

Введите целое число: 32809
"Обратное" ему число: 90823
Введите целое число: 78290
"Обратное" ему число: 9287

На самом деле мы можем не добавлять последнюю цифру первого числа во второе до цикла. Если присвоить n2 ноль, то в цикле при выполнении выражения n2 = n2 * 10 не будет происходить сдвига разряда, так как при умножении на 0 получается 0. И первая цифра будет добавляться в разряд единиц.

n1 = int(input("Введите целое число: "))
n2 = 0

while n1 > 0:
    digit = n1 % 10
    n1 = n1 // 10

    n2 = n2 * 10
    n2 = n2 + digit


print('"Обратное" ему число:', n2)

Приведенный алгоритм решения математический и соответствует задаче, если условие, что надо обрабатывать именно число, является строгим.

Однако средства Python позволяют решить подобную задачу более практично. Так у списков есть метод reverse, позволяющий изменять порядок элементов на обратный. Мы можем получить из исходной строки список символов, выполнить его реверс, после чего с помощью строкового метода join опять собрать в единую строку.

n1 = input("Введите целое число: ")
n_list = list(n1)
n_list.reverse()
n2 = "".join(n_list)
print('"Обратное" ему число:', n2)

Также можно воспользоваться взятием среза из исходной строки с первого до последнего символа с обратным шагом:

n1 = input("Введите целое число: ")
n2 = n1[::-1]
print('"Обратное" ему число:', n2)

Два последних варианта решения задачи - это способы переворота строки, а не числа как такового. Если объект, который надо перевернуть, изначально имеет числовой тип данных (например, генерируется функцией randint()), то его придется преобразовывать в строковый тип данных с помощью функции str(). И если на выходе мы должны получить опять же число, то надо будет строку превращать обратно в число с помощью функции int().

from random import randint

print("Исходное число:", end=' ')
n1 = randint(5000, 1000000)
print(n1)
n1 = str(n1)

n2 = n1[::-1]
n2 = int(n2)
print('"Обратное" ему число:', n2)

Пример выполнения:

Исходное число: 970334
"Обратное" ему число: 433079


Решение задач на Python




Все разделы сайта