Не пойму в чем ошибка
Сегодня в N часов M минут хозяин магазина заказал доставку нового товара. Оператор сказал, что продукты доставят через T минут. Сколько будет времени на электронных часах, когда привезут долгожданные продукты? Написал к задаче вот такой код но яндекс его не засчитывает
hour = int(input())
minute = int(input())
duration = int(input())
def whatTime(a, b, c) :
hour = a
minute = b
duration_hours = c // 60
duration_minutes = c % 60
hour += duration_hours
minute += duration_minutes
if minute > 60:
hour += 1
minute -= 60
while hour > 24:
hour -= 24
if hour < 10:
if minute < 10:
time = f'0{hour}:0{minute}'
else:
time = f'0{hour}:{minute}'
elif minute < 10:
time = f'{hour}:0{minute}'
else:
time = f'{hour}:{minute}'
return time
print(whatTime(hour, minute, duration))
Ответы (4 шт):
Ошибка: a=23, b=0, c=60 программа напечатает 24:00 (!).
Поменяйте условие hour > 24 на hour >= 24.
Программу можно сократить в вычислениях и в форматировании:
def whatTime(a, b, c):
h = (a + (b + c) // 60) % 24
m = (b + c) % 60
return f'{h:02}:{m:02}'
print(whatTime(int(input()), int(input()), int(input())))
Я бы сделал вот так:
def new_time(hour: int, minute: int, duration: int) -> str:
new_hour = (hour + (minute + duration) // 60) % 24
new_minute = (minute + duration) % 60
return f'{new_hour:0>2}:{new_minute:0>2}'
Тут мы используем встроенную фичу форматирования строк
Решения с использованием функций циклов и так далее не подходят, они уже для другого уровня подготовки, здесь отлаживаются другие навыки.
hours = int(input())
minutes = int(input())
lag = int(input())
minutes = minutes + lag
hours = (hours + minutes // 60) % 24
minutes = minutes % 60
print(f'{hours:02d}:{minutes:02d}')
Более ясное решение с сохранением цикла
hours = int(input())
minutes = int(input())
T = int(input()) # Через сколько минут будет доставка
for i in range(T): # Цикл по минутам
minutes += 1
if minutes == 60:
minutes = 0
hours += 1
if hours == 24:
hours = 0
print(f'Товары привезут в {hours} часов и {minutes} минут!')