// практика без регистрации

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

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

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

Контекст

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

Задача

Реализуйте format_duration(seconds): по целому числу секунд верните строку длительности, например 75 → "1:15".

Правила

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

Примеры

format_duration(75)    # "1:15"
format_duration(3661)  # "1:01:01"
format_duration(0)     # "0:00"
format_duration(59)    # "0:59"
format_duration(60)    # "1:00"
format_duration(70)    # "1:10"
format_duration(609)   # "10:09"
format_duration(3599)  # "59:59"
format_duration(3600)  # "1:00:00"
format_duration(4150)  # "1:09:10"
format_duration(4209)  # "1:10:09"
format_duration(45296)  # "12:34:56"
format_duration(-1)    # ValueError: seconds must be non-negative

Где это в системе

format_duration вызывается в сериализаторе карточки контента: поле duration собирается из числа секунд в базе и уходит в ответ API как отформатированная строка.

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

Подсказка 1

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

Подсказка 2

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

Подсказка 3

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

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

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

Продолжите практику