Перевернуть число
Вводится целое число. Вывести число, обратное введенному по порядку составляющих его цифр. Например, введено 3425, надо вывести 5243.
Решение задачи на языке программирования Python
Алгоритм:
- Найдем остаток от деления на 10 исходного (первого) числа. Тем самым получим последнюю его цифру. Запомним ее.
- Присвоим эту цифру новому (второму) числу-«перевертышу».
- Разделим нацело на 10 первое число. Тем самым избавимся от последней цифры в нем.
- Снова найдем остаток от деления на 10 того, что осталось от первого числа. Запомним цифру-остаток.
- Разделим нацело на 10 первое число. Избавимся от текущей последней цифры в нем.
- Умножим на 10 второе число. Тем самым увеличим его разрядность до двух и сдвинем первую цифру в более старший разряд.
- Добавим к полученному второму числу запомненную ранее цифру из первого числа.
- Будем повторять действия п. 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
Переворот числа (вывести цифры в обратном порядке)
Вводится произвольное целое число. Выведите число, составленное из этих же цифр в обратном порядке.
Пример 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
Да, на этом сайте могут помочь тем, кто и сам старается. Если у вас нет никаких наработок — могут заминусовать вопрос и закрыть его (и через некоторое время если будет ситуация повторяться у вас будет заблокирована возможность задавать вопросы). Поэтому лучше сразу описывайте что у вас уже есть, какие шаги сделаны, в чём конкретно затык — шансы получить помощь будут гораздо выше. И приводите код не в комментариях, а сразу в вопросе.