• 1
    Entrée et sortie
    • Tâches
  • 2
    Conditions
    • Tâches
  • 3
    Boucle for
    • Tâches
  • 4
    Chaînes
    • Tâches
  • 5
    Boucle while
    • Tâches
  • 6
    Listes
    • Tâches
  • 7
    Tableaux 2D
    • Tâches
  • 8
    Dictionnaires
    • Tâches
  • 9
    Ensembles
    • Tâches
  • 10
    Fonctions et récursion
    • Tâches
  • к

Leçon 4. Lines

Difficulté :

Exercice«Vidéo»

💻 Python

Vous avez décidé de regarder un très long flux, un enregistrement de cours ou le passage d'un jeu. Le lecteur affiche le temps que vous avez déjà regardé et la durée totale de la vidéo. Votre tâche & mdash; Écrire un programme qui déterminera quelle partie de la vidéo entière vous avez déjà regardée et présentera cette partie sous la forme d'une fraction simple irréductible.

rn

Par exemple, si vous avez regardé 2 heures 20 minutes, cela représente 1/3 de la vidéo entière.

rn

Le programme doit prendre deux lignes en entrée, représentant le temps au format "HH:MM:SS" : la première ligne & mdash; le temps visionné, la seconde & mdash; la durée totale. Ensuite, le programme doit calculer et afficher une part sous la forme d'une liste de deux nombres & nbsp; [numérateur, dénominateur] & nbsp; et accompagner la sortie d'un message texte compréhensible.

rn

Restriction importante : & nbsp; pour trouver le plus grand diviseur commun et simplifier la fraction, vous ne pouvez pas utiliser de fonctions intégrées provenant de bibliothèques (par exemple, de la bibliothèque & nbsp; math ). Vous devez implémenter l'algorithme de recherche vous-même en utilisant & nbsp; for .

rn

& nbsp;

Format d entrée

Temps visionné (chaîne au format « HH:MM:SS »)
Durée totale de la vidéo (chaîne au format « HH:MM:SS »)

Format de sortie

Fraction simplifiée (une liste de deux entiers)
Message explicatif (ligne)

Exemple

Entrée

02:20:00
07:00:00

Sortie

Vous avez regardé 1/3 de la vidéo totale.

Indice

There will be no clue here, decide for yourself!

main.py
Test 1
Test 2
Test 3
Test 4
Test 5
Test 6
Test 7
Test 8
Test 9
Test 10
Solution du développeur
# Функция для преобразования времени в секунды
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} всего видео.")

🎉 Félicitations ! 🎉

Tu as brillamment résolu la tâche ! C était difficile, mais tu as trouvé la bonne solution. Tu es encore plus proche de maîtriser la programmation ! Continue ainsi.

AD

Publicité

red-snake blue-snake green-snake

Exécution de votre code...

Assistant IA

Bonjour ! Je suis ton assistant de programmation. Pose moi toutes tes questions sur Python — je peux t expliquer les fonctions, les méthodes et t aider avec la tâche en cours !