Перевернуть число
Вводится целое число. Вывести число, обратное введенному по порядку составляющих его цифр. Например, введено 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
Как перевернуть число в питоне
Забыли пароль? Введите ваш е-мейл адрес. Вы получите письмо на почту со ссылкой для восстановления пароля.
Авторизация
Быстрая регистрация
После регистрации вы можете задавать вопросы и отвечать на них, зарабатывая деньги. Ознакомьтесь с правилами, будем рады видеть вас в числе наших экспертов!
Создать аккаунт
- Работа на Vamber
- Интересные факты
- 10% от рефералов
- ТОП авторов
- Работа без опыта
Авторизация
Быстрая регистрация
После регистрации вы можете задавать вопросы и отвечать на них, зарабатывая деньги. Ознакомьтесь с правилами, будем рады видеть вас в числе наших экспертов!
Своеобразное задание на Python. Перевернут вещественное число
Никак не могу разобраться, как это перевернуть. Понимаю, что нужно, сначала развернуть часть до точки, потом ту, что за точкой и засуммировать. Писал что-то, писал, так и не пришел к решению. Буду благодарен за помощь.[ #Пытался что-то написать, как моя голова думала. Так и не смог завершить.
def get_reversed(user_input): new_number = '' while user_input != 0: new_number += str(user_input % 10) user_input //= 10 new_number = int(new_number) return new_number def point_separation(user_input): left_num = '' right_num = '' for symbol in str(user_input): if symbol == '.': left_num = str(get_reversed(right_num)) right_num = '' right_num += str(symbol) right_num = str(get_reversed(right_num)) reversed_num = str(left_num + '.' + right_num) return reversed_num user_input1 = (input('Enter the first number\n>>> ')) user_input2 = (input('Enter the second number\n>>> ')) separation_number1 = point_separation(user_input1) separation_number2 = point_separation(user_input2)
Отслеживать
задан 13 авг 2022 в 13:19
3 4 4 бронзовых знака
Я не уверен, что это получится сделать в python, т.к. там очень большие погрешности при вычислениях. Даже если, например, у числа 102.12 дробную часть, то она будет равна 0.12000000000000455, а не 0.12
13 авг 2022 в 13:49
У float проблемы с точностью, поэтому такое лучше делать в строках
Переворот
Напишите функцию, которая будет принимать строку из цифр 0, 6, 9 и определять, будет ли образованное ими число после переворота тем же самым числом.
Примеры
same_upsidedown("6090609") ➞ True same_upsidedown("9669") ➞ False # При перевороте превращается в 6996 same_upsidedown("69069069") ➞ True
Варианты решения
def same_upsidedown(ntxt): return ntxt == ntxt.translate(str.maketrans("69","96"))[::-1]
def same_upsidedown(txt): d = return all(a in d and d[a] == b for a, b in zip(txt, txt[::-1]))
