Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/34: Рейтинг темы: голосов - 34, средняя оценка - 4.76
-1 / 3 / 0
Регистрация: 09.10.2022
Сообщений: 21

Как разобраться с задачей?

22.10.2022, 14:51. Показов 7605. Ответов 2

Студворк — интернет-сервис помощи студентам
Задача 5. Недоделка 2
Что нужно сделать

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

И тут вы натыкаетесь на программу, которая была написана прошлым программистом и которая как раз решает такую задачу! Однако старший программист сказал вам немного переписать этот код, чтобы он не выглядел так ужасно. Да и вам самим становится, мягко говоря, не по себе от него.

Разбейте приведённую ниже программу на функции. Повторений кода должно быть как можно меньше. Также сделайте, чтобы в основной части программы был только ввод чисел, затем изменённые числа и вывод их суммы.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
first_n = int(input("Введите первое число: "))
first_num_count = 0
temp = first_n
while temp > 0:
    first_num_count += 1
    temp = temp // 10   
if first_num_count < 3:
 print("В первом числе меньше трёх цифр.")
else:
 last_digit = first_n % 10
 first_digit = first_n // 10 ** (first_num_count - 1)
 between_digits = first_n % 10 ** (first_num_count - 1) // 10
 first_n = last_digit * 10 ** (first_num_count - 1) + between_digits * 10 + first_digit
 
 print('Изменённое первое число:', first_n)
 
 second_n = int(input("\nВведите второе число: "))
 
 second_num_count = 0
 temp = second_n
 while temp > 0:
   second_num_count += 1
   temp = temp // 10   
 
 if second_num_count < 4:
   print("Во втором числе меньше четырёх цифр.")
 else:
   last_digit = second_n % 10
   first_digit = second_n // 10 ** (second_num_count - 1)
   between_digits = second_n % 10 ** (second_num_count - 1) // 10
   second_n = last_digit * 10 ** (second_num_count - 1) + between_digits * 10 + first_digit
 
   print('Изменённое второе число:', second_n)
 
   print('\nСумма чисел:', first_n + second_n)

Что оценивается

программа разбита на несколько функций;
выполнены условия по организации основного тела программы.



есть варианты ?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.10.2022, 14:51
Ответы с готовыми решениями:

Как разобраться с задачей?
Задача 2. Сессия Что нужно сделать Решите задачу из урока 4. Чтобы сдать зачёт студент Пётр написал программу. Она определяет...

Как разобраться с задачей?
Наибольшая сумма цифр Пользователь вводит N чисел. Среди натуральных чисел, которые были введены, найдите наибольшее по сумме цифр....

Я не понимаю, как разобраться с этой задачей на питоне
Поезда в Страну Чудес ходят по необычным правилам. Первоначально два поезда стоят на станциях с координатами a0 и b0. Поезда движутся...

2
 Аватар для Semen-Semenich
5233 / 3478 / 1175
Регистрация: 21.03.2016
Сообщений: 8,305
22.10.2022, 16:48
Лучший ответ Сообщение было отмечено Catstail как решение

Решение

legger90, а если число будет из 150 цифр?
Python
1
2
3
4
 last_digit = first_n % 10
 first_digit = first_n // 10 ** (first_num_count - 1)
 between_digits = first_n % 10 ** (first_num_count - 1) // 10
 first_n = last_digit * 10 ** (first_num_count - 1) + between_digits * 10 + first_digit
то это уже работать не будет
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
def counting_digits(num):
    count_ = 0
    while num > 0:
        count_ += 1
        num //= 10
    return count_
 
def permul(num):
    temp = num
    n = 1
    last = num%10
    temp //= 10
    while temp :
        first = temp%10
        temp //= 10 
        n *= 10
    middle = num % (first * n) // 10
    return last * n + middle * 10 + first
 
f = 1
while True:
    if f == 1:
        num_1 = int(input('число 1: ')) 
        if counting_digits(num_1) < 3:
            print("В первом числе меньше трёх цифр.")
            continue
    f = 2
    num_2 = int(input('число 2: '))
    if counting_digits(num_2) > 3:
        print('\nчисла до изменения\n')
        print(f'число 1 - {num_1}\nчисло 2 - {num_2}\n')
        num_1, num_2 = (permul(num_1), permul(num_2))
        print('числа после изменения\n')
        print(f'число 1 - {num_1}\nчисло 2 - {num_2}\n')
        print('результат', sum((num_1, num_2)))
        break
    print("Во втором числе меньше четырёх цифр.")
1
-1 / 3 / 0
Регистрация: 09.10.2022
Сообщений: 21
23.10.2022, 21:04  [ТС]
супер. спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.10.2022, 21:04
Помогаю со студенческими работами здесь

Прошу разобраться с задачей на рекурсию. Как это сделать?
Плоды на дереве росли в соответствии с хитрым алгоритмом: Первый плод вырастал на самой вершине дерева. Второй плод, весивший 5 единиц...

Не могу разобраться задачей
Дана блок-схема алгоритма, который обрабатывает целое число x. Какое максимальное целое число необходимо подать на вход алгоритма,...

как разобраться с задачей
Добрый день! что не так: Напишите программу, которая принимает на вход список чисел в одной строке и выводит на экран в одну строку...

Нужно разобраться с задачей
На вход подается n чисел(в 1 строке). Нужно подсчитать сумму модулей нечетных элементов и кол-во четных элементов в данной...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru