Marayg
Исходный код:
Исходный код:
Здесь практически всё отлично. Логика разделена по функциям, используются аккуратные конструкции без избыточной сложности. Тем не менее, есть 3 нюанса.
Стоило бы добавить поясняющие сообщения к исключениям. Сейчас функция time_to_minutes()
может выбросить ValueError
по разным причинам, но пользователь не узнает, из-за чего конкретно это случилось. План-минимум - хотя бы передать значение, которое вызвало ошибку:
raise ValueError(minutes)
Но ещё лучше - дать развёрнутое пояснение причины, по которой возникло исключение:
raise ValueError('Минуты должны находиться в диапазоне от 0 до 59 включительно')
В функции calc_arrival()
можно улучшить имена переменных.
arrival
- это «прибытие». Но в переменной хранится количество минут, точнее, время, представленное в виде количества минут. Я бы использовал что-нибудь вроде time_in_minutes
. Подсознательно вариант кажется не до конца доработанным, так что скорее всего, при наличии свободного времени подумал бы над ним ещё. Но в качестве начального варианта пойдёт.
hours_arrival
, minutes_arrival
- так как в функции изначально идёт речь только о прибытии, то дополнение _arrival
здесь можно убрать. Оно не добавляет смысла по сравнению с hours
и minutes
, зато удлиняет каждое имя более чем в 2 раза.
def calc_arrival(departure, travel_time):
time_in_minutes = time_to_minutes(departure) + time_to_minutes(travel_time, False)
hours = (time_in_minutes // 60) % 24
minutes = time_in_minutes % 60
return f'{hours:02}:{minutes:02}'
Речь про эту строку:
hours_arrival = (arrival // 60) % 24
Операторы //
и %
имеют одинаковый приоритет, поэтому скобки можно просто убрать, результат не изменится.
Ещё немного причесал структуру time_to_minutes()
, разбив код на логические блоки.