Контекст
Видеоплатформа показывает длительность ролика под превьюшкой: «1:15», «10:09», «1:01:01». Данные приходят из базы в секундах — целое число. Отдельная функция превращает это число в строку нужного формата перед тем, как она уйдёт в JSON ответа.
Задача
Реализуйте format_duration(seconds). На вход приходит целое число секунд.
Правила
- Если
secondsменьше нуля — выбросьтеValueError("seconds must be non-negative"). - Если итоговая длительность меньше 3600 секунд (то есть часов нет) — возвращайте строку вида
M:SSилиMM:SS. Минуты НЕ дополняются нулём слева; секунды всегда двузначные (дополняются нулём при необходимости). - Если длительность 3600 секунд и больше — возвращайте строку вида
H:MM:SS. Часы НЕ дополняются нулём слева; минуты и секунды всегда двузначные. - Ноль секунд — корректный вход: результат
"0:00". - Входное значение всегда целое (не дробное).
Примеры
format_duration(75) # "1:15"
format_duration(3661) # "1:01:01"
format_duration(0) # "0:00"
format_duration(59) # "0:59"
format_duration(3599) # "59:59"
format_duration(3600) # "1:00:00"
format_duration(-1) # ValueError: seconds must be non-negative
Где это в системе
format_duration вызывается в сериализаторе карточки контента: поле duration собирается из числа секунд в базе и уходит в ответ API как отформатированная строка.