Python

Можно помощь в Python Коде.

Задача 4. Число наоборот 3

Пользователь вводит два вещественных числа — N и K. Напишите программу, которая отдельно заменяет сначала целую часть на число, которое получается из исходного записью его цифр в обратном порядке, затем то же самое делает с дробной частью. После этого числа складываются и сумма выводится на экран.

Пример:

Введите первое число: 102.12

Введите второе число: 123.34

Первое число наоборот: 201.21

Второе число наоборот: 321.43

Сумма: 522.64
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)
Sergey Verzunov
Sergey Verzunov
62 360
Лучший ответ
Сергей Гусев а можно ещё одну помощь в другом коде?
Сергей Гусев Задача 5. Наименьший делитель

Дано натуральное число n>1. Напишите функцию, которая находит его наименьший делитель, отличный от 1.

Пример 1:

Введите число: 6

Наименьший делитель, отличный от единицы: 2

Пример 2:

Введите число: 17

Наименьший делитель, отличный от единицы: 17
Эдуард Пешков В твоём коде, если написать ноль в конце числа, то он не отсекается, то бишь их надо отсекать
Вот вариант покороче
Денис Попов Спасибо, у меня код заработал только после того как срез в цикле поставил
Я вот так сделал.
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))))}")
Василий Федюнин Дополнение, убираем принты и добавляет эти строки после
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) # Вернули обратный порядок числам
Dima Любимов
Dima Любимов
205
Вот самый подходящий вариант для товарищей из 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)
Виталий Кузьминский если взять число с тремя и более цифрами после точки, то ваше решение не работает. в условиях задачи не оговаривается кол-во цифр после точки.
Вот самое правильное решение для учеников 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 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)))
I1
Ilyas 1
132
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)
#Задача 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 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))
Можно сделать все просто)

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)}')
Сергей Грибанов хороший код, но переворачивает только одно число после точки