Как вывести числа в обратном порядке питон
Перейти к содержимому

Как вывести числа в обратном порядке питон

  • автор:

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

Вводится целое число. Вывести число, обратное введенному по порядку составляющих его цифр. Например, введено 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

X Скрыть Наверх

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

Переворот числа (вывести цифры в обратном порядке)

Author24 — интернет-сервис помощи студентам

Вводится произвольное целое число. Выведите число, составленное из этих же цифр в обратном порядке.
Пример 1
Ввод Вывод
123456789
Вывод
987654321
Пример 2
Ввод Вывод
100500
Вывод
5001
Выводимое число не может начинаться с нуля.
В задаче нельзя использовать списки, срезы и сортировку

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Цикл While: вывести цифры заданного числа в обратном порядке
Помогите пожалуйста написать программу, которая выводит на экран все цифры введенного пользователем.

Выведите цифры числа в обратном порядке
Доброго времени суток, прошу помощи в решении данной задачи. Дано натуральное число N.Выведите.

Вывести цифры числа в обратном порядке
Добрый день) Помогите закончить задачу по питону. Пользователь вводит произвольное число n.

Вывести цифры числа в обратном порядке рекурсивно
Дано натуральное число N. Вывести все его цифры по одной, в обратном порядке, разделяя их пробелами.

47 / 40 / 11
Регистрация: 05.08.2021
Сообщений: 144

Лучший ответ

Сообщение было отмечено mik-a-el как решение

Решение

1 2 3 4 5 6 7
n = 100500 #n = 123456789 accum = '' while n > 0: accum += str(n % 10) n //= 10 print(int(accum))

4943 / 3294 / 1142
Регистрация: 21.03.2016
Сообщений: 8,084

1 2 3 4 5 6 7 8 9
n = int(input()) accum = 0 while n : accum += n % 10 n //= 10 if n: accum *= 10 print(accum )

3638 / 1848 / 595
Регистрация: 21.11.2021
Сообщений: 3,610
Ну или так:

print(int(str(int(input('n = ')))[::-1]))

47 / 40 / 11
Регистрация: 05.08.2021
Сообщений: 144
idealist,
В задаче нельзя использовать списки, срезы и сортировку
3638 / 1848 / 595
Регистрация: 21.11.2021
Сообщений: 3,610

ЦитатаСообщение от Zloyalex100 Посмотреть сообщение

В задаче нельзя использовать списки, срезы и сортировку

Пардон, не дочитал! ))

1 2 3 4 5
n = int(input('n = ')) res = '' for symb in str(n): res = symb + res print(int(res))

Вирусоборец

13114 / 7263 / 1537
Регистрация: 06.09.2009
Сообщений: 26,512

1 2 3 4 5 6
n = int(input()) accum = 0 while n: accum = accum*10 + n%10 n //= 10 print(accum )

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Вывести все цифры числа по одной, в обратном порядке
Задача на рекурсию. Дано натуральное число N. Выведите все его цифры по одной, в обратном.

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

Вывести цифры введенного числа через пробел в обратном порядке
С использыванием цикла while 3. Написать программу, которая выводит на экран все цифры.

Вывести цифры в обратном порядке
Напишите рекурсивную функцию numbers(x), которая выводит на экран цифры натурального числа x в.

Вывести числа обратном порядке, при этом переставив все цифры в каждом числе в обратном порядке
Добрый день. Не могу понять алгоритм решения данной задачи, помогите пожалуйста. Заданы пять.

Вывести числа в обратном порядке, при этом переставив все цифры в каждом числе в обратном порядке
Чтобы Вовочка не скучал на уроке информатики, Иван Иваныч специально для него к каждому уроку.

Или воспользуйтесь поиском по форуму:

5 способов перевернуть строку в Python 3

Создадим функцию reversed1 с аргументом variable , где variable — переменная, хранящая строку, которую мы хотим перевернуть. Так как строка являются неизменяемым объектом, то создадим отдельную, пока что пустую переменную res , которая в будущем будет хранить результат.

def reversed1(variable): res=''

В функцию поместим цикл, который будет «прохаживаться» по каждому из элементов строки. Начнем мы с конца строки, используя положительные индексы, соответственно параметр start функции range — len(variable)-1 . -1 потому, что длина строки всегда на 1 больше, чем индекс последнего ее элемента. Закончить мы должны на первом символе строки, поэтому параметр stop функции range() — -1, поскольку перечисляются числа до значения этого параметра, не включительно. Параметр step — -1, потому что мы считаем в обратном порядке.

def reversed1(variable): res='' for i in range(len(variable)-1,-1,-1): pass

Теперь заполним тело цикла — проведем конкатенацию между старым значением res и элементом строки с индексом i . Таким образом, при каждой итерации цикла мы добавляем по одному символу к результату. После окончания цикла вернем результат.

def reversed1(variable): res='' for i in range(len(variable)-1,-1,-1): res+=variable[i] return res n = reversed1(input()) print(n)

2. Использование цикла со списком в результате

Этот способ аналогичен предыдущему, единственное его отличие заключается в типе данных переменной res — здесь она является списком.

Вместо конкатенации можно использовать метод append() , с помощью которого мы добавляем элемент, указанный в качестве аргумента к методу, в конец списка. Итак, мы получили:

def reversed2(variable): res=[] for i in range(len(variable)-1,-1,-1): res.append(variable[i]) return res

Функция пока что возвращает список, состоящий из односимвольных элементов. Если нас это не устраивает, то почему бы не преобразовать список в строку при помощи метода join() ? Сделаем это, добавив конструкцию res=».join(res) .

def reversed1(variable): res=[] for i in range(len(variable)-1,-1,-1): res.append(variable[i]) res=''.join(res) return res n = reversed1(input()) print(n)

3. Рекурсия

Третий в нашем обзоре способ — рекурсия, как всегда трудная для понимания. Как всегда создаем функцию, но не спешим помещать туда цикл.

Начну объяснение с конца. Если мы записали в результат все символы кроме первого, то длина оставшейся строки равна единице и, следовательно, ее нужно вернуть. Получаем:

def reversed3(variable): if len(variable) == 1: return variable

Но если длина строки больше одного, то нужно вернуть последний из ее элементов и вызвать эту же функцию, но уже отрезав последний символ. Сделать это мы можем с помощью среза variable[:-1] . Обновим картину:

def reversed3(variable): if len(variable) == 1: return variable else: return variable[-1] + reversed3(variable[:-1])

Использование else: здесь необязательно, так как после возвращения чего-либо этой функцией она завершится. Поэтому конструкцию return variable[-1] + reverse3(variable[:-1]) можно поместить напрямую в тело функции. Конечный вариант решения:

def reversed3(variable): if len(variable) == 1: return variable return variable[-1] + reversed3(variable[:-1]) n = reversed3(input()) print(n)

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

В Python 3 встроена специальная функция reversed() , в качестве аргумента она принимает список или строку, а возвращает итератор последовательности значений, состоящей из всех элементов аргумента в обратном порядке.

Простыми словами — недостаточно написать res = reversed(variable) , данные нужно преобразовать в нужный тип (в нашем случае — в строку). Сделать мы это можем при помощи метода join() , соединив последовательность через пустую строку. После выполненных действий возвращаем результат. Код:

def reversed4(variable): res=''.join(reversed(variable)) return res n = reversed4(input()) print(n)

5. Срез строки

Можете представить способ перевернуть строку, который был бы короче названия функции? А я могу!

Срез строки — вещь прекрасная, но порой пугающая новичков «уплотненным» синтаксисом. Срез содержит три параметра — [start:stop:step], аналогично функции range() . Подробнее о них вы можете прочитать в других статьях на Хабре.

Для способа с использованием срезов не нужно даже создавать функцию, только зря строки и время потратите. Все элементарно — присвоим параметру step значение -1 и пропустим два других параметра, происходит магия — строка переворачивается:

n = input()[::-1] print(n)

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

Заключение

Первый и второй способы как нельзя лучше подходят, если во время переворота строки нужно ее изменять. При этом они значительно уступают 4 и 5 способам в скорости. Читаются умеренно хорошо, поэтому в некоторых случаях их уместно использовать.

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

Четвертый способ довольно быстрый, отлично читается и подходит во многих случаях.

Пятый способ — самый быстрый, хорошо читается, очень краткий (6 символов), поэтому его я считаю наиболее предпочтительным.

Сравнительную таблицу скорости некоторых способов вы можете найти по ссылке — https://python-scripts.com/reversed

Если знаете что-либо еще по этой теме, хотите меня поправить или дать идею — пишите в комментариях, я все прочту и приму к сведению. Удачи!

Python. Нужно вывести список цифр в обратном порядке

Даны два целых числа A и B (A < B). Вывести в порядке убывания все целые числа, расположенные между A и B (не включая числа A и B), а также количество N этих чисел. помогите вывести в обратном порядке У меня пока вот какой код получился:

a = int(input()) b = int(input()) i = int() for i in range (-b, -(a + 1)): print(-i) print ("Количество чисел в цикле: ", b - a - 1) 

Отслеживать
77.2k 6 6 золотых знаков 58 58 серебряных знаков 126 126 бронзовых знаков
задан 11 окт 2018 в 9:23
61 1 1 золотой знак 1 1 серебряный знак 2 2 бронзовых знака
Тут не бюро по написанию кода. Попытки решить задачу самостоятельно были? Где результат?
11 окт 2018 в 9:29
stackoverflow — Биржа написание ответов на лабораторные 🙂
11 окт 2018 в 9:30

a = int(input()) b = int(input()) i = int() for i in range (-b, -(a + 1)): print(-i) print («Количество чисел в цикле: «, b — a — 1)

11 окт 2018 в 9:38
решил уже, да и какая разница биржа или нет? забанятб да?
11 окт 2018 в 9:38

Да, на этом сайте могут помочь тем, кто и сам старается. Если у вас нет никаких наработок — могут заминусовать вопрос и закрыть его (и через некоторое время если будет ситуация повторяться у вас будет заблокирована возможность задавать вопросы). Поэтому лучше сразу описывайте что у вас уже есть, какие шаги сделаны, в чём конкретно затык — шансы получить помощь будут гораздо выше. И приводите код не в комментариях, а сразу в вопросе.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *