Вынесите повторяющийся ввод положительного целого в функцию, обработайте 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()
Сохраняется исходное ограничение на положительные целые числа. Формула предполагает постоянную силу вдоль перемещения и согласованные единицы, например ньютоны и метры для результата в джоулях. Разрешение нуля или дробей было бы отдельным изменением требований.