Оптимизация и исправление программы расчёта работы

Вынесите повторяющийся ввод положительного целого в функцию, обработайте ValueError и исправьте текст результата на Work done.

Короткий ответ

Что ответить на собеседовании

Вынесите повторяющийся ввод положительного целого в функцию, обработайте ValueError и исправьте текст результата на Work done.

Подробный разбор

Ответ с пояснениями

Условие

Напишите программу, которая запрашивает у пользователя значения силы (force) и расстояния (distance), после чего вычисляет работу (work = force * distance).

Требования:

  • Устранить дублирование кода, вынеся ввод в отдельную функцию.
  • Исправить опечатку в выводе (заменить "Workdone" на "Work done").
  • Повысить читаемость кода.
while True:
    force = int(input("Enter the force value: "))
    if force > 0:
        break

while True:
    distance = int(input("Enter the distance value: "))
    if distance > 0:
        break

print("The Workdone is", force * distance)

Ответ

Вынесите повторяющийся ввод положительного целого в функцию, обработайте ValueError и исправьте текст результата на Work done.

def read_positive_integer(prompt):
    while True:
        try:
            value = int(input(prompt))
        except ValueError:
            print('Enter an integer')
            continue
        if value > 0:
            return value
        print('Value must be positive')

def main():
    force = read_positive_integer('Enter the force value: ')
    distance = read_positive_integer('Enter the distance value: ')
    print('The Work done is', force * distance)

if __name__ == '__main__':
    main()

Сохраняется исходное ограничение на положительные целые числа. Формула предполагает постоянную силу вдоль перемещения и согласованные единицы, например ньютоны и метры для результата в джоулях. Разрешение нуля или дробей было бы отдельным изменением требований.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее