• 1
    Ввод и вывод данных
    • Задачи
  • 2
    Условия
    • Задачи
  • 3
    Цикл for
    • Задачи
  • 4
    Строки
    • Задачи
  • 5
    Цикл while
    • Задачи
  • 6
    Списки
    • Задачи
  • 7
    Двумерные массивы
    • Задачи
  • 8
    Словари
    • Задачи
  • 9
    Множества
    • Задачи
  • 10
    Функции и рекурсия
    • Задачи
  • к

Занятие 4. строки

Уровень сложности:

иконка человека красный иконка человека белая иконка человека зеленая Pythonlib

Задача«Видео»

Вы решили посмотреть очень длинный стрим, запись лекции или прохождение игры. В плеере отображается время, которое вы уже посмотрели, и общая продолжительность видео. Ваша задача — написать программу, которая определит, какую долю от всего видео вы уже просмотрели, и представит эту долю в виде простой несократимой дроби.

Например, если вы посмотрели 2 часа 20 минут из 7 часов, это составляет 1/3 от всего видео.

Программа должна принимать на вход две строки, представляющие время в формате "ЧЧ:ММ:СС": первая строка — просмотренное время, вторая — общая продолжительность. Затем программа должна вычислить и вывести долю в виде списка из двух чисел [числитель, знаменатель] и сопроводить вывод понятным текстовым сообщением.

Важное ограничение: для нахождения наибольшего общего делителя и упрощения дроби нельзя использовать встроенные функции из библиотек (например, из библиотеки math). Вы должны реализовать алгоритм поиска самостоятельно, используя цикл for.

 

Формат ввода

Просмотренное время (строка в формате "ЧЧ:ММ:СС")
Общая продолжительность видео (строка в формате "ЧЧ:ММ:СС")

Формат Вывода

Упрощенная дробь (список из двух целых чисел)
Поясняющее сообщение (строка)

Пример

Ввод

02:20:00
07:00:00

Вывод

Вы просмотрели 1/3 всего видео.

Подсказка

Тут подсказки не будет, решай сам!

main.py
Тест 1
Тест 2
Тест 3
Тест 4
Тест 5
Тест 6
Тест 7
Тест 8
Тест 9
Тест 10
Решение разработчика
# Функция для преобразования времени в секунды
def time_to_seconds(time_str):
    # Разделяем строку времени на часы, минуты, секунды
    hours, minutes, seconds = map(int, time_str.split(':'))
    # Преобразуем все в секунды
    total_seconds = hours * 3600 + minutes * 60 + seconds
    return total_seconds

# Функция для нахождения наибольшего общего делителя (НОД)
def find_gcd(a, b):
    # Используем алгоритм Евклида
    while b != 0:
        a, b = b, a % b
    return a

# Считываем время просмотра и общее время
watched_time = input()
total_time = input()

# Преобразуем время в секунды
watched_seconds = time_to_seconds(watched_time)
total_seconds = time_to_seconds(total_time)

# Вычисляем долю просмотренного времени в виде дроби
numerator = watched_seconds
denominator = total_seconds

# Находим НОД для сокращения дроби
gcd = find_gcd(numerator, denominator)

# Сокращаем дробь
numerator //= gcd
denominator //= gcd

# Выводим результат
print(f"Вы просмотрели {numerator}/{denominator} всего видео.")

🎉 Поздравляем! 🎉

Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.

AD

Реклама

red-snake blue-snake green-snake

Запускаем ваш код...

Помощник ИИ

Привет! Я твой помощник по программированию. Задавай любые вопросы по Python, я могу рассказать о функциях, методах, обьяснить то, что тебе не понятно, а так же о текущей задаче!