• 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 5. While cycle

Difficulté :

Exercice«Accumulation pour achat»

💻 Python

Vous travaillez en tant que programmeur dans une entreprise qui crée une « archive numérique de fichiers personnels ». Votre tâche — Développer un module pour vérifier les dates saisies. Le système doit être absolument fiable et ne pas accepter de dates incorrectes ou impossibles (par exemple, le 30 février ou le 31 avril), ainsi que des données dans un format incorrect.

Le programme doit lire les lignes les unes après les autres jusqu'à ce que l'utilisateur saisisse   0 . Pour chaque ligne saisie, il est nécessaire de vérifier : s'il s'agit d'une date correcte et existante au   format dd.mm.YYYY .

Format d entrée

Le programme reçoit plusieurs lignes en entrée. Chaque ligne contient soit une date à vérifier, soit un ensemble arbitraire de caractères. La saisie des données se termine lorsqu'un symbole   0 est introduit sur une ligne séparée.

Format de sortie

pour chaque ligne saisie (sauf pour la ligne finale & nbsp; 0 ), le programme doit afficher sur une nouvelle ligne :

  • la date correcte & nbsp; & mdash; si la ligne est une date existante au format & nbsp; DD.MM.YYYY . Dans tous les autres cas (format incorrect, date inexistante).

Exemple

Entrée

12.12.2024
31.04.2023
02.29.2023
Hello World
02.29.2024
01/01/2000
0

Sortie

La date correcte
date ou format incorrect
date ou format incorrect
date ou format incorrect
date correcte
date correcte

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
import datetime

while True:
    # Считываем очередную строку от пользователя
    input_str = input()

    # Проверяем условие выхода из цикла
    if input_str == '0':
        break

    try:
        # Пытаемся преобразовать строку в дату по заданному формату.
        # Формат '%d.%m.%Y' означает:
        # %d - день месяца с ведущим нулем (01-31)
        # %m - месяц с ведущим нулем (01-12)
        # %Y - год в виде четырех цифр (например, 2024)
        #
        # Эта функция автоматически проверяет и формат, и существование даты.
        # Например, для "30.02.2024" она вызовет ошибку, так как такой даты нет.
        datetime.datetime.strptime(input_str, '%d.%m.%Y')
        
        # Если преобразование прошло успешно, значит дата корректна
        print("Корректная дата")

    except ValueError:
        # Если в процессе преобразования возникла ошибка ValueError,
        # это означает, что либо формат строки не соответствует 'ДД.ММ.ГГГГ',
        # либо сама дата невозможна (например, 31 апреля).
        print("Некорректная дата или формат")

🎉 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 !