python solution.py

Форматирование длительности на Python

Преобразуйте число секунд в короткую запись времени с правильными разделителями и ведущими нулями.

  • ЯзыкPython
  • УровеньНачальный
  • НавыкЦелочисленное деление и форматирование строк

Контекст

Видеоплатформа показывает длительность ролика под превьюшкой: «1:15», «10:09», «1:01:01». Данные приходят из базы в секундах — целое число. Отдельная функция превращает это число в строку нужного формата перед тем, как она уйдёт в JSON ответа.

Задача

Реализуйте format_duration(seconds). На вход приходит целое число секунд.

Правила

  1. Если seconds меньше нуля — выбросьте ValueError("seconds must be non-negative").
  2. Если итоговая длительность меньше 3600 секунд (то есть часов нет) — возвращайте строку вида M:SS или MM:SS. Минуты НЕ дополняются нулём слева; секунды всегда двузначные (дополняются нулём при необходимости).
  3. Если длительность 3600 секунд и больше — возвращайте строку вида H:MM:SS. Часы НЕ дополняются нулём слева; минуты и секунды всегда двузначные.
  4. Ноль секунд — корректный вход: результат "0:00".
  5. Входное значение всегда целое (не дробное).

Примеры

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 как отформатированная строка.

Двигайтесь по одному шагу

Подсказка 1

Сначала отделите часы, затем минуты и секунды из остатка.

Подсказка 2

Минуты и секунды после двоеточия выводите двумя цифрами.

Подсказка 3

Формат меняется на H:MM:SS только начиная с 3600 секунд.

Как разложить секунды на часы, минуты и секунды

Целочисленное деление даёт старшую единицу времени, а остаток — часть для следующего шага.

Не оставляйте задачу изолированной