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

Как перевернуть дробную часть числа python

  • автор:

Перевернуть float в python [закрыт]

Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

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

Закрыт 2 года назад .

Как перевернуть вещественное число в python? Например введём число 123.956 И как сделать так чтобы на выход мы получили число 956.123?

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

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

Определить равна ли сумма k цифр дробной части заданного вещественного числа сумме цифр целой части
Помогите доделать задание, исправьте пожалуйста код. Срочно! Задание: Выполнить задания, выделяя.

Определить равна ли сумма цифр из целой части действительного числа суммы такого же количества цифр из дробной части
Пожалуйста помогите написать блок-схему(алгоритм)умоляю.Пожалуйста

Определить равна ли сумма цифр из целой части действительного числа суммы такого же количества цифр из дробной части
Определить равна ли сумма цифр из целой части действительного числа суммы такого же количества цифр.

Определения, равна сумма цифр целой части вещественного числа сумме такого же количества цифр в дробной части
Нада написать 2 программки 1. Определения, равна сумма цифр целой части вещественного числа.

Порядок дробной части вещественного числа.
Здравствуйте, уважаемые программисты всея форума! Доброго вам времени суток! У меня случилось.

Эксперт Python

2685 / 1591 / 513
Регистрация: 21.02.2017
Сообщений: 4,209
Записей в блоге: 1

Лучший ответ

Сообщение было отмечено Egor_1 как решение

Решение

1 2 3 4 5
input_number1 = input('Введите первое число: ') input_number2 = input('Введите второе число: ') print(".".join(map("".join, map(reversed, input_number1.split("."))))) print(".".join(map("".join, map(reversed, input_number2.split(".")))))

Регистрация: 28.06.2021
Сообщений: 8

Добавлено через 3 часа 16 минут
А как эти два получившихся числа можно сложить .

Эксперт Python

2685 / 1591 / 513
Регистрация: 21.02.2017
Сообщений: 4,209
Записей в блоге: 1
Egor_1, преобразовать их в float и сложить.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Найти среднее арифметическое между суммами 1-й и 2-й цифр целой части и 2-й и 3-й цифрами дробной части числа
Номер 3. Дробная часть числа состоит из 3-х цифр. Найти среднее арифметическое между суммами 1-й и.

Если в дробной части числа меньше 4-х цифр, то дополнить ее нулями до 4-х цифр
Текст включает в себя список десятичных чисел, целая и дробная часть которых разделены точкой. Как.

Нахождение одинаковых цифр в числе/ выделение цифр в дробной части
1) Дано натуральное n. Верно ли, что это число содержит более k одинаковых цифр? 2) Верно ли, что.

Как описать процедуру InvertDigits(K), меняющую порядок следования цифр целого положительного числа K на обратный
Помогите пожалуйста решить задачу Proc7. Описать процедуру InvertDigits(K), меняющую порядок.

Как из дробной части числа сделать целое число?
Здравствуйте! Вопрос такой : как из дробной части числа сделать целое число? Например из doble x.

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

Есть ли какая нибудь формула для переворачивания числа задом-наперёд?

т.е. 123 -> 321
Скорее всего нет, но мало ли.
ЗЫ. Решения на языках программирования не предлагать. Я тоже так могу, это легко и не интересно.

sudopacman ★★★★★
04.02.16 22:37:49 MSK
1 2 →

Какие операции ты хочешь использовать?

Легко реализовать, используя floor.

tyakos ★★★
( 04.02.16 22:44:31 MSK )
Последнее исправление: tyakos 04.02.16 22:48:07 MSK (всего исправлений: 1)

А в какое число эта формула должна превращать 10, например? Обратимой такая формула (функция?) в общем случае не может быть, полагаю.

sevenredlines ★
( 04.02.16 22:45:05 MSK )
Ответ на: комментарий от sevenredlines 04.02.16 22:45:05 MSK

Для чисел с 1 и более нулём в конце или начале значение должно быть не определено. А то фиг пойми что получится.

sudopacman ★★★★★
( 04.02.16 22:49:33 MSK ) автор топика

алгоритм есть, формулы — хз

Deleted
( 04.02.16 22:50:10 MSK )

В математике такой формулы нет вроде.

gssomi ★★
( 04.02.16 22:50:20 MSK )

Есть ли какая нибудь формула для переворачивания числа задом-наперёд?

но ведь число перевернуть можно?? вы-же переворачиваете..Значит есть «формула»/алгоритм (что вообще-то одно и то-же).. если хотите можно записать в виде ряда. Можно по другому.

MKuznetsov ★★★★★
( 04.02.16 22:58:21 MSK )

Нету выражения для определения разрядности, значит нету и формулы никакой. Если мы ограничеваемся арифметическими операциями.

Zaskar
( 04.02.16 22:58:22 MSK )
Ответ на: комментарий от Deleted 04.02.16 22:50:10 MSK

Та алгоритм это легко.

sudopacman ★★★★★
( 04.02.16 22:59:32 MSK ) автор топика
Ответ на: комментарий от Zaskar 04.02.16 22:58:22 MSK

Ну в математике функция может задаваться не только арифметическими операциями.

sudopacman ★★★★★
( 04.02.16 23:00:47 MSK ) автор топика

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

tyakos ★★★
( 04.02.16 23:01:11 MSK )

Сначала определись с тем, какие функции и операции должны быть допустимы в такой «формуле». Потом, скорее всего, получишь ответ исходя из свойств этих функций.

А то, понимаешь ли, я могу сказать, что есть функция swap(x) , заданная бесконечной таблицей.

intelfx ★★★★★
( 04.02.16 23:03:04 MSK )
Ответ на: комментарий от sudopacman 04.02.16 23:00:47 MSK

То, что ты написал в ОП, определяет функцию, т.е. твой вопрос бессмысленен.

tyakos ★★★
( 04.02.16 23:03:49 MSK )
Ответ на: комментарий от tyakos 04.02.16 23:01:11 MSK

Во. Лорчую. Ты сформулировал.

intelfx ★★★★★
( 04.02.16 23:03:55 MSK )

MS EULA 3.0

public static BigInteger reverseIt(BigInteger in) return new BigInteger(new StringBuilder(in.abs().toString()).reverse().toString()).multiply(BigInteger.valueOf(in.signum()));
>

telepat
( 04.02.16 23:04:53 MSK )
Ответ на: MS EULA 3.0 от telepat 04.02.16 23:04:53 MSK

А на языке математики как?

sudopacman ★★★★★
( 04.02.16 23:06:53 MSK ) автор топика
snprintf(buff, «%d», num); len = strlen(buff); if(len>1)

alman ★★★
( 04.02.16 23:12:42 MSK )
Последнее исправление: alman 04.02.16 23:13:51 MSK (всего исправлений: 1)

Пыхоответ на основной вопрос жизни, вселенной и вообще:

echo ((int) strrev(24));

(каст по желанию можешь убрать и не будет убивать «ведущий» ноль)
deep-purple ★★★★★
( 04.02.16 23:12:47 MSK )
Ответ на: комментарий от alman 04.02.16 23:12:42 MSK

Защем впустую стрлен гонял? Сразу буфф гнал бы до \0 и все.

deep-purple ★★★★★
( 04.02.16 23:14:19 MSK )
Ответ на: комментарий от deep-purple 04.02.16 23:14:19 MSK

Точно. Просто сильно спешил.

Хотя. не факт. Но мне лениво думать сейчас.

И ещё нужно добавить размер буфера, ибо snprintf, а не sprintf

alman ★★★
( 04.02.16 23:16:38 MSK )
Последнее исправление: alman 04.02.16 23:20:28 MSK (всего исправлений: 2)

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

(define (swap n) (if (< (abs n) 10) n (+ (* (remainder n 10) (expt 10 (floor (log10 (abs n))))) (swap (quotient n 10))))) 

Соответственно, эту функцию можно описать как:

f(n) = n; |n| < 10, f(n) = (n%10)*(10^floor(log10(|n|))) + f(n/10) 

при условии, что у нас % - остаток от целочисленного деления, floor - отбрасывает дробную часть, log10 - десятичный логарифм и / - целочисленное деление.

Возможно, можно и для вещественных обобщить, лень думать сейчас.

unikoid ★★★
( 04.02.16 23:21:07 MSK )
Последнее исправление: unikoid 04.02.16 23:26:12 MSK (всего исправлений: 1)

#include int main() < int n, reverse = 0; printf("Enter a number to reverse\n"); scanf("%d", &n); while (n != 0) < reverse = reverse * 10; reverse = reverse + n%10; n = n/10; >printf("Reverse of entered number is = %d\n", reverse); return 0; > 

int13h ★★★★★
( 04.02.16 23:25:08 MSK )
Последнее исправление: int13h 04.02.16 23:26:56 MSK (всего исправлений: 1)

Ответ на: комментарий от int13h 04.02.16 23:25:08 MSK

Лучшее решение. Для процессоров, имеющих инструкции умножения и деления. Но и вообще - просто получилось.

alman ★★★
( 04.02.16 23:31:39 MSK )
Последнее исправление: alman 04.02.16 23:33:35 MSK (всего исправлений: 1)

Ответ на: комментарий от Zaskar 04.02.16 22:58:22 MSK

Если у нас есть функция округления, то легко выразить математически количество разрядов - надо просто округлить в верхнюю сторону десятичный логарифм числа (для других систем счисления - другое основание логарифма).

Если функции округления нет. В математике вроде как есть оператор взятия дробной части числа (я видел на одном из уроков математике в школе в старших классах такой финт). Используя его и простую арифметику можно выразить функцию округления.

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

KivApple ★★★★★
( 04.02.16 23:50:58 MSK )
Последнее исправление: KivApple 05.02.16 00:00:57 MSK (всего исправлений: 2)

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

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