Задача 4. Число наоборот 3
Пользователь вводит два вещественных числа — N и K. Напишите программу, которая отдельно заменяет сначала целую часть на число, которое получается из исходного записью его цифр в обратном порядке, затем то же самое делает с дробной частью. После этого числа складываются и сумма выводится на экран.
Пример:
Введите первое число: 102.12
Введите второе число: 123.34
Первое число наоборот: 201.21
Второе число наоборот: 321.43
Сумма: 522.64
Python
Можно помощь в Python Коде.
def reverse_float(num):
parts = str(num).split('.')
reversed_parts = [''.join(reversed(part)) for part in parts]
return float( '.'.join(reversed_parts) )
a = reverse_float(input('a'))
b = reverse_float(input('b'))
print('rvs a', a)
print('rvs b', b)
print('total', a + b)
parts = str(num).split('.')
reversed_parts = [''.join(reversed(part)) for part in parts]
return float( '.'.join(reversed_parts) )
a = reverse_float(input('a'))
b = reverse_float(input('b'))
print('rvs a', a)
print('rvs b', b)
print('total', a + b)
Вот вариант покороче


Денис Попов
Спасибо, у меня код заработал только после того как срез в цикле поставил
Я вот так сделал.
def int_number(number):
anwer = 0
int_num = number // 1
float_num = number % 1
while int_num != 0:
anwer *= 10
anwer += int_num % 10
int_num = int_num // 10
anwer += float_num
return anwer
def float_num(number):
anwer = 0
int_num = number // 1
float_num = round(number % 1, 5)
while float_num != 0:
anwer += (float_num * 10) // 1
float_num = float_num * 10
float_num =round(float_num % 1, 5)
anwer /= 10
anwer += int_num
return anwer
number_1 = float(input('Введите первое число: '))
number_2 = float(input('Введите второе число: '))
number_1 = int_number(number_1)
number_1 = float_num(number_1)
number_2 = int_number(number_2)
number_2 = float_num(number_2)
print('Первое число наоборот: ', number_1)
print('Второе число наоборот: ', number_2)
print('Сумма: ', number_1 + number_2)
def int_number(number):
anwer = 0
int_num = number // 1
float_num = number % 1
while int_num != 0:
anwer *= 10
anwer += int_num % 10
int_num = int_num // 10
anwer += float_num
return anwer
def float_num(number):
anwer = 0
int_num = number // 1
float_num = round(number % 1, 5)
while float_num != 0:
anwer += (float_num * 10) // 1
float_num = float_num * 10
float_num =round(float_num % 1, 5)
anwer /= 10
anwer += int_num
return anwer
number_1 = float(input('Введите первое число: '))
number_2 = float(input('Введите второе число: '))
number_1 = int_number(number_1)
number_1 = float_num(number_1)
number_2 = int_number(number_2)
number_2 = float_num(number_2)
print('Первое число наоборот: ', number_1)
print('Второе число наоборот: ', number_2)
print('Сумма: ', number_1 + number_2)
Реализовал таким образом. Для коллег с курса)
def separation_whole(number):
````flag = True
````whole = "" #целое
````fraction = "" #дробь
````for symbol in number:
````````if symbol == '.':
````````````flag = False
````````elif flag:
````````````whole = whole + symbol
````````else:
````````````fraction = fraction + symbol
````return int(whole)
def separation_fraction(number):
````flag = True
````whole = "" #целое
````fraction = "" #дробь
````for symbol in number:
````````if symbol == '.':
````````````flag = False
````````elif flag:
````````````whole = whole + symbol
````````else:
````````````fraction = fraction + symbol
````return int(fraction)
def revers(n):
````count = 0
````while n > 0:
````````count = count * 10 + n % 10
````````n //= 10
````return str(count)
def bonding(revers_whole, revers_fraction):
````revers_num = revers_whole + "." + revers_fraction
````return str(revers_num)
def summ_mun(first_num, second_num):
````summ = float(first_num) + float(second_num)
````return summ
first_number = (input("Введите первое число: "))
````second_number = (input("Введите второе число: "))
print(f"\nПервое число наоборот: {bonding(revers(separation_whole(first_number)), revers(separation_fraction(first_number)))}"
f"\nВторое число наоборот: {bonding(revers(separation_whole(second_number)), revers(separation_fraction(second_number)))}")
print(f"\nСумма: {summ_mun(bonding(revers(separation_whole(first_number)), revers(separation_fraction(first_number))), bonding(revers(separation_whole(second_number)), revers(separation_fraction(second_number))))}")
def separation_whole(number):
````flag = True
````whole = "" #целое
````fraction = "" #дробь
````for symbol in number:
````````if symbol == '.':
````````````flag = False
````````elif flag:
````````````whole = whole + symbol
````````else:
````````````fraction = fraction + symbol
````return int(whole)
def separation_fraction(number):
````flag = True
````whole = "" #целое
````fraction = "" #дробь
````for symbol in number:
````````if symbol == '.':
````````````flag = False
````````elif flag:
````````````whole = whole + symbol
````````else:
````````````fraction = fraction + symbol
````return int(fraction)
def revers(n):
````count = 0
````while n > 0:
````````count = count * 10 + n % 10
````````n //= 10
````return str(count)
def bonding(revers_whole, revers_fraction):
````revers_num = revers_whole + "." + revers_fraction
````return str(revers_num)
def summ_mun(first_num, second_num):
````summ = float(first_num) + float(second_num)
````return summ
first_number = (input("Введите первое число: "))
````second_number = (input("Введите второе число: "))
print(f"\nПервое число наоборот: {bonding(revers(separation_whole(first_number)), revers(separation_fraction(first_number)))}"
f"\nВторое число наоборот: {bonding(revers(separation_whole(second_number)), revers(separation_fraction(second_number)))}")
print(f"\nСумма: {summ_mun(bonding(revers(separation_whole(first_number)), revers(separation_fraction(first_number))), bonding(revers(separation_whole(second_number)), revers(separation_fraction(second_number))))}")
Василий Федюнин
Дополнение, убираем принты и добавляет эти строки после
first_number = (input("Введите первое число: "))
second_number = (input("Введите второе число: "))
revers_first_num = bonding(revers(separation_whole(first_number)), revers(separation_fraction(first_number)))
revers_second_num = bonding(revers(separation_whole(second_number)), revers(separation_fraction(second_number)))
print(f"\nПервое число наоборот: {revers_first_num}")
print(f"Второе число наоборот: {revers_second_num}")
summ_revers_num = summ_mun(revers_first_num, revers_second_num)
print(f"Сумма: {summ_revers_num}")
first_number = (input("Введите первое число: "))
second_number = (input("Введите второе число: "))
revers_first_num = bonding(revers(separation_whole(first_number)), revers(separation_fraction(first_number)))
revers_second_num = bonding(revers(separation_whole(second_number)), revers(separation_fraction(second_number)))
print(f"\nПервое число наоборот: {revers_first_num}")
print(f"Второе число наоборот: {revers_second_num}")
summ_revers_num = summ_mun(revers_first_num, revers_second_num)
print(f"Сумма: {summ_revers_num}")
fix_first_num_one = str(x) # для дробной части в формате строк
fix_first_num_two = x # для дробной части в формате чисел
# Целая часть
x = int(x) # Убираем дробную часть, что бы оставить целое число
x = str(x) # Переводим из целого числа в строку
x = x[:: -1] # Обратный порядок сроки
# Дробная часть
degree_count = 0
for degree in fix_first_num_one:
degree_count += 1
if degree == ".": # строка после точки обнуляет счетчик degree_count
degree_count = 0
# degree_count берет в счет сроки после точки что позволяет определить степень из 10ти
degree_count_sum = 10 ** degree_count # вычисляем степень из 10
summ = fix_first_num_two * degree_count_sum # Умножаем на степень из 10ти и переводим из вещественных числа в целое
fractional_count = " " # счетчик дробной части который считает и присваивает обратный порядок
while degree_count_sum > 1: # зная степень от 10ти находим обратный порядок чисел
m = int(summ % 10)
summ //= 10
fractional_count += str(m)
degree_count_sum //= 10
returned_frac = int(fractional_count) # Вернули обратный порядок числам
fix_first_num_two = x # для дробной части в формате чисел
# Целая часть
x = int(x) # Убираем дробную часть, что бы оставить целое число
x = str(x) # Переводим из целого числа в строку
x = x[:: -1] # Обратный порядок сроки
# Дробная часть
degree_count = 0
for degree in fix_first_num_one:
degree_count += 1
if degree == ".": # строка после точки обнуляет счетчик degree_count
degree_count = 0
# degree_count берет в счет сроки после точки что позволяет определить степень из 10ти
degree_count_sum = 10 ** degree_count # вычисляем степень из 10
summ = fix_first_num_two * degree_count_sum # Умножаем на степень из 10ти и переводим из вещественных числа в целое
fractional_count = " " # счетчик дробной части который считает и присваивает обратный порядок
while degree_count_sum > 1: # зная степень от 10ти находим обратный порядок чисел
m = int(summ % 10)
summ //= 10
fractional_count += str(m)
degree_count_sum //= 10
returned_frac = int(fractional_count) # Вернули обратный порядок числам

Вот самый подходящий вариант для товарищей из Skillbox):
def turn_numbers1(N):
number = 0
main_part = round(N, 1) // 1
print(main_part)
while main_part > 0:
rest = main_part % 10
main_part = main_part // 10
number = number * 10
number = number + rest
print(number)
return number
def turn_numbers2(N):
number2 = 0
residual_part = round(N - (N // 1), 2) * 100
print(residual_part)
while residual_part > 0:
rest = (round((N - (N // 1)), 2) * 100) % 10
residual_part = residual_part // 10
number2 = number2 + rest
number2 = number2 * 10 - 0.1
number2 /= 1000
return number2
N1 = float(input("Введите первое вещественное число: "))
reverse_N1_main = turn_numbers1(N1)
reverse_N1_residual = turn_numbers2(N1)
reverse_N1 = reverse_N1_main + reverse_N1_residual
print("1ое число наоборот: ", reverse_N1)
N2 = float(input("Введите второе вещественное число: "))
reverse_N2_main = turn_numbers1(N2)
reverse_N2_residual = turn_numbers2(N2)
reverse_N2 = reverse_N2_main + reverse_N2_residual
print("2ое число наоборот: ", reverse_N2)
summ_reversed_num = reverse_N1 + reverse_N2
print("Сумма: ", summ_reversed_num)
def turn_numbers1(N):
number = 0
main_part = round(N, 1) // 1
print(main_part)
while main_part > 0:
rest = main_part % 10
main_part = main_part // 10
number = number * 10
number = number + rest
print(number)
return number
def turn_numbers2(N):
number2 = 0
residual_part = round(N - (N // 1), 2) * 100
print(residual_part)
while residual_part > 0:
rest = (round((N - (N // 1)), 2) * 100) % 10
residual_part = residual_part // 10
number2 = number2 + rest
number2 = number2 * 10 - 0.1
number2 /= 1000
return number2
N1 = float(input("Введите первое вещественное число: "))
reverse_N1_main = turn_numbers1(N1)
reverse_N1_residual = turn_numbers2(N1)
reverse_N1 = reverse_N1_main + reverse_N1_residual
print("1ое число наоборот: ", reverse_N1)
N2 = float(input("Введите второе вещественное число: "))
reverse_N2_main = turn_numbers1(N2)
reverse_N2_residual = turn_numbers2(N2)
reverse_N2 = reverse_N2_main + reverse_N2_residual
print("2ое число наоборот: ", reverse_N2)
summ_reversed_num = reverse_N1 + reverse_N2
print("Сумма: ", summ_reversed_num)
Виталий Кузьминский
если взять число с тремя и более цифрами после точки, то ваше решение не работает. в условиях задачи не оговаривается кол-во цифр после точки.
Вот самое правильное решение для учеников Skill.
def change(number):
***before_point = ''
***after_point = ''
***flag = True
***for symbol in number:
****** if symbol == '.':
*********flag = False
****** elif flag:
*********before_point = symbol + before_point
******else:
*********after_point = symbol + after_point
***newNumber = before_point + '.' + after_point
***return newNumber
firstNum = input('Введите первое число: ')
secondNum = input('Введите второе число: ')
First_revers1 = change(firstNum)
Second_revers2 = change(secondNum)
print('\nПервое число наоборот: ', First_revers1)
print('Второе число наоборот: ', Second_revers2)
print('Сумма перевернутых чисел: ', float(First_revers1) + float(Second_revers2))
def change(number):
***before_point = ''
***after_point = ''
***flag = True
***for symbol in number:
****** if symbol == '.':
*********flag = False
****** elif flag:
*********before_point = symbol + before_point
******else:
*********after_point = symbol + after_point
***newNumber = before_point + '.' + after_point
***return newNumber
firstNum = input('Введите первое число: ')
secondNum = input('Введите второе число: ')
First_revers1 = change(firstNum)
Second_revers2 = change(secondNum)
print('\nПервое число наоборот: ', First_revers1)
print('Второе число наоборот: ', Second_revers2)
print('Сумма перевернутых чисел: ', float(First_revers1) + float(Second_revers2))
Глеб Бородин
Спасибо Лев!
У меня вот так:
def r_num(num):
flag = True
b = ''
c = ''
for i in num:
if i == '.':
flag = False
elif flag:
b += i
else:
c += i
b, c = int(b), int(c)
return rev_num(b, c)
def rev_num(num_rev1, num_rev2):
rev1 = 0
rev2 = 0
while num_rev1 > 0:
dig = num_rev1 % 10
rev1 = rev1 * 10 + dig
num_rev1 //= 10
while num_rev2 > 0:
dig = num_rev2 % 10
rev2 = rev2 * 10 + dig
num_rev2 //= 10
rev1, rev2 = str(rev1), str(rev2)
sum_all = float(rev1 + '.' + rev2)
return sum_all
number_n1 = (input('Введите первое число: '))
print('Превернутое первое число:', r_num(number_n1))
number_n2 = (input('Введите второе число: '))
print('Превернутое второе число:', r_num(number_n2))
print('Сумма:', r_num(number_n1), '+', r_num(number_n2), '=', (r_num(number_n1) + r_num(number_n2)))
def r_num(num):
flag = True
b = ''
c = ''
for i in num:
if i == '.':
flag = False
elif flag:
b += i
else:
c += i
b, c = int(b), int(c)
return rev_num(b, c)
def rev_num(num_rev1, num_rev2):
rev1 = 0
rev2 = 0
while num_rev1 > 0:
dig = num_rev1 % 10
rev1 = rev1 * 10 + dig
num_rev1 //= 10
while num_rev2 > 0:
dig = num_rev2 % 10
rev2 = rev2 * 10 + dig
num_rev2 //= 10
rev1, rev2 = str(rev1), str(rev2)
sum_all = float(rev1 + '.' + rev2)
return sum_all
number_n1 = (input('Введите первое число: '))
print('Превернутое первое число:', r_num(number_n1))
number_n2 = (input('Введите второе число: '))
print('Превернутое второе число:', r_num(number_n2))
print('Сумма:', r_num(number_n1), '+', r_num(number_n2), '=', (r_num(number_n1) + r_num(number_n2)))
def coup(list):
number3 = ''
for i in str(list[::-1]):
number3 += i
return number3
def work_in_parts(number):
list = str(number).split('.')
return float(coup(list=list[0]) + '.' + coup(list=list[1]))
number1 = work_in_parts(number=input('Введите первое число: '))
number2 = work_in_parts(number=input('Введите второе число: '))
print('Первое число наоборот: ', number1)
print('Второе число наоборот: ', number2)
print('Сумма: ', number1 + number2)
number3 = ''
for i in str(list[::-1]):
number3 += i
return number3
def work_in_parts(number):
list = str(number).split('.')
return float(coup(list=list[0]) + '.' + coup(list=list[1]))
number1 = work_in_parts(number=input('Введите первое число: '))
number2 = work_in_parts(number=input('Введите второе число: '))
print('Первое число наоборот: ', number1)
print('Второе число наоборот: ', number2)
print('Сумма: ', number1 + number2)
#Задача 3. Число наоборот 2
def num_versa():
if n == 0:
print('Программа завершена!')
else:
rev_n = str(n)[::-1]
rev_k = str(k)[::-1]
true_n = int(rev_n)
true_k = int(rev_k)
print('Первое число наоборот:', rev_n)
print('Второе число наоборот:', rev_k)
total = true_n + true_k
print('Сумма:', total)
print('Сумма наоборот:', str(total)[::-1])
n = int(input('Введите первое число: '))
k = int(input('Введите второе число: '))
num_versa()
def num_versa():
if n == 0:
print('Программа завершена!')
else:
rev_n = str(n)[::-1]
rev_k = str(k)[::-1]
true_n = int(rev_n)
true_k = int(rev_k)
print('Первое число наоборот:', rev_n)
print('Второе число наоборот:', rev_k)
total = true_n + true_k
print('Сумма:', total)
print('Сумма наоборот:', str(total)[::-1])
n = int(input('Введите первое число: '))
k = int(input('Введите второе число: '))
num_versa()
def converty(x):
x
b = str(int(x))[::-1]
n = len(str(x))
m = len(str(int(x)))
c = str(x)[m+1:n]
d = c[::-1]
x1 = b+'.'+d
return x1
y = float(input('y='))
y1 = converty(y)
z = float(input('z='))
z1 = converty(z)
print(y1, z1, float(y1) + float(z1))
x
b = str(int(x))[::-1]
n = len(str(x))
m = len(str(int(x)))
c = str(x)[m+1:n]
d = c[::-1]
x1 = b+'.'+d
return x1
y = float(input('y='))
y1 = converty(y)
z = float(input('z='))
z1 = converty(z)
print(y1, z1, float(y1) + float(z1))
Можно сделать все просто)
n_1 = float(input('Введите первое число: '))
n_2 = float(input('Введите второе число: '))
print()
def revers_number(number):
"""Часть которая переворачивает число до точки"""
x = int(number)
n = 0
while x > 0:
digit = x % 10
x = x // 10
n = n * 10
n = n + digit
"""Часть которая переворачивает число после точки"""
y = ''
for i in reversed(str(number)):
if i == '.':
break
y += i
y = float('0.' + y)
"""Вывод"""
return n + y
print(f'Первое число наоборот: {revers_number(n_1)}')
print(f'Второе число наоборот: {revers_number(n_2)}')
print(f'Сумма: {revers_number(n_1) + revers_number(n_2)}')
n_1 = float(input('Введите первое число: '))
n_2 = float(input('Введите второе число: '))
print()
def revers_number(number):
"""Часть которая переворачивает число до точки"""
x = int(number)
n = 0
while x > 0:
digit = x % 10
x = x // 10
n = n * 10
n = n + digit
"""Часть которая переворачивает число после точки"""
y = ''
for i in reversed(str(number)):
if i == '.':
break
y += i
y = float('0.' + y)
"""Вывод"""
return n + y
print(f'Первое число наоборот: {revers_number(n_1)}')
print(f'Второе число наоборот: {revers_number(n_2)}')
print(f'Сумма: {revers_number(n_1) + revers_number(n_2)}')
Сергей Грибанов
хороший код, но переворачивает только одно число после точки
Похожие вопросы
- Помощь с Python Завершение после выполнения части кода
- Массивы Python. Помощь в написании кода
- Python Код для замены пикселя на текст
- Нужна помощь по PYTHON,заранее спасибо
- Нужна помощь в python
- Срочная помощь по Python
- Нужна помощь в создании кодов
- Можете помочь! Нужен код для Python, что бы он заменял определенный текст в файле
- Где ошибка в коде? (Python)
- Переписать код из С++ в Python
Дано натуральное число n>1. Напишите функцию, которая находит его наименьший делитель, отличный от 1.
Пример 1:
Введите число: 6
Наименьший делитель, отличный от единицы: 2
Пример 2:
Введите число: 17
Наименьший делитель, отличный от единицы: 17