• 1
    Entrada y salida de datos
    • Tareas
  • 2
    Condiciones
    • Tareas
  • 3
    Bucle for
    • Tareas
  • 4
    Cadenas de texto
    • Tareas
  • 5
    Bucle while
    • Tareas
  • 6
    Listas
    • Tareas
  • 7
    Matrices 2D
    • Tareas
  • 8
    Diccionarios
    • Tareas
  • 9
    Conjuntos
    • Tareas
  • 10
    Funciones y recursión
    • Tareas
  • к

Lección 4. Lines

Dificultad:

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

Tarea«Vídeo»

💻 Python

Decidiste ver una transmisión muy larga, grabando una conferencia o el paso de un juego. El reproductor muestra el tiempo que ya has visto y la duración total del video. Tu tarea & mdash; Escribir un programa que determine qué parte del video completo ya has visto y presente esta parte en forma de una fracción irreducible simple.

Por ejemplo, si viste 2 horas 20 minutos, eso es 1/3 de todo el video.

El programa debe recibir dos líneas de entrada, que representan el tiempo en el formato "HH: MM: SS": la primera línea & mdash; tiempo visto, la segunda & mdash; duración total. Luego, el programa debe calcular y mostrar una parte en forma de una lista de dos números & nbsp; [numerador, denominador] & nbsp; y acompañar la salida con un mensaje de texto comprensible.

Restricción importante: & nbsp; para encontrar el máximo común divisor y simplificar la fracción, no puedes usar funciones integradas de bibliotecas (por ejemplo, de la biblioteca & nbsp; math ). Debes implementar el algoritmo de búsqueda por tu cuenta usando un bucle & nbsp; for .

& nbsp;

Formato de entrada

Tiempo visto (cadena en el formato "HH:MM:SS")
Duración total del video (cadena en el formato "HH:MM:SS")

Formato de salida

Fracción simplificada (una lista de dos enteros)
Mensaje explicativo (línea)

Ejemplo

Entrada

02:20:00
07:00:00

Salida

Has visto 1/3 del video total.

Pista

There will be no clue here, decide for yourself!

main.py
Prueba 1
Prueba 2
Prueba 3
Prueba 4
Prueba 5
Prueba 6
Prueba 7
Prueba 8
Prueba 9
Prueba 10
Solución del desarrollador
# Функция для преобразования времени в секунды
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} всего видео.")

🎉 ¡Felicidades! 🎉

¡Has resuelto la tarea brillantemente! Era un reto difícil, pero encontraste la solución correcta. ¡Estás un paso más cerca de dominar la programación! Sigue así, cada etapa superada te hace más fuerte.

AD

Publicidad

red-snake blue-snake green-snake

Ejecutando tu código...

Asistente de IA

¡Hola! Soy tu asistente de programación. Hazme cualquier pregunta sobre Python — puedo explicarte funciones, métodos y ayudarte con la tarea actual.