• 1
    Entrada e saída
    • Tarefas
  • 2
    Condições
    • Tarefas
  • 3
    Loop for
    • Tarefas
  • 4
    Strings
    • Tarefas
  • 5
    Loop while
    • Tarefas
  • 6
    Listas
    • Tarefas
  • 7
    Matrizes 2D
    • Tarefas
  • 8
    Dicionários
    • Tarefas
  • 9
    Conjuntos
    • Tarefas
  • 10
    Funções e recursão
    • Tarefas
  • к

Lição 4. Lines

Dificuldade:

Tarefa«Vídeo»

💻 Python

Você decidiu assistir a uma transmissão muito longa, uma gravação de uma palestra ou a passagem de um jogo. O player exibe o tempo que você já assistiu e a duração total do vídeo. Sua tarefa — escrever um programa que determine qual fração do vídeo inteiro você já assistiu e apresente essa fração na forma de uma fração irredutível.

rn

Por exemplo, se você assistiu 2 horas e 20 minutos, isso corresponde a 1/3 de todo o vídeo.

rn

O programa deve receber duas linhas como entrada, representando o tempo no formato "HH:MM:SS": a primeira linha — tempo assistido, a segunda — duração total. Em seguida, o programa deve calcular e exibir a fração na forma de uma lista de dois números   [numerador, denominador]   e acompanhar a saída com uma mensagem de texto compreensível.

rn

Restrição importante:   para encontrar o máximo divisor comum e simplificar a fração, você não pode usar funções internas de bibliotecas (por exemplo, da biblioteca   math ). Você deve implementar o algoritmo de busca por conta própria usando um laço   for .

rn

 

Formato de entrada

Tempo assistido (string no formato "HH:MM:SS")
Duração total do vídeo (string no formato "HH:MM:SS")

Formato de saída

Fração simplificada (uma lista de dois inteiros)
Mensagem explicativa (linha)

Exemplo

Entrada

02:20:00
07:00:00

Saída

Você assistiu a 1/3 do vídeo total.

Dica

There will be no clue here, decide for yourself!

main.py
Teste 1
Teste 2
Teste 3
Teste 4
Teste 5
Teste 6
Teste 7
Teste 8
Teste 9
Teste 10
Solução do desenvolvedor
# Функция для преобразования времени в секунды
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} всего видео.")

🎉 Parabéns! 🎉

Você resolveu a tarefa brilhantemente! Foi difícil, mas você encontrou a solução certa. Você está um passo mais perto de dominar a programação! Continue assim.

AD

Publicidade

red-snake blue-snake green-snake

Executando seu código...

Assistente de IA

Olá! Sou seu assistente de programação. Faça qualquer pergunta sobre Python — posso explicar funções, métodos e ajudá-lo com a tarefa atual!