• 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 2. Conditions

Difficulté :

Exercice«Protection de forteresse»

💻 Python

Imaginez que vous créez une application de calendrier simple. L'une des fonctions les plus importantes d'une telle application — est d'empêcher l'utilisateur de saisir des dates inexistantes. Par exemple, le 30 février ou le 31 avril.

Écrivez un programme qui demande à l'utilisateur de saisir trois nombres : le jour, le mois et l'année. Votre tâche — est de vérifier si la date saisie est réelle. Le programme doit prendre en compte que différents mois ont un nombre de jours différent, ainsi que le fait qu'il existe des années bissextiles où février compte 29 jours.

Règles pour la vérification :

  1. Mois avec 31 jours : Janvier (1), Mars (3), Mai (5), Juillet (7), Août (8), Octobre (10), Décembre (12).
  2. Mois avec 30 jours : Avril (4), Juin (6), Septembre (9), Novembre (11).
  3. Février (2) a 28 jours dans une année normale et 29 jours dans une année bissextile.
  4. Une année est bissextile si elle est divisible par 4, mais pas par 100, ou si elle est divisible par 400.

Le programme doit afficher "date correcte" si la date existe, et "date incorrecte" sinon.

Format d entrée

Jour (entier)
mois (entier)
année (nombre entier)

Format de sortie

Le résultat de la vérification (ligne)

Exemple

Entrée

29
2
2024

Sortie

La 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
# Запрашиваем у пользователя три числа: день, месяц, год
day = int(input())
month = int(input())
year = int(input())

# Проверяем базовую корректность введенных данных
if month < 1 or month > 12:
    print("Некорректная дата")
else:
    # Проверяем корректность дня для каждого месяца
    
    # Месяцы с 31 днем: январь(1), март(3), май(5), июль(7), август(8), октябрь(10), декабрь(12)
    if month in [1, 3, 5, 7, 8, 10, 12]:
        if day < 1 or day > 31:
            print("Некорректная дата")
        else:
            print("Корректная дата")
    
    # Месяцы с 30 днями: апрель(4), июнь(6), сентябрь(9), ноябрь(11)
    elif month in [4, 6, 9, 11]:
        if day < 1 or day > 30:
            print("Некорректная дата")
        else:
            print("Корректная дата")
    
    # Февраль (2) - особый случай
    elif month == 2:
        # Проверяем, является ли год високосным
        is_leap_year = False
        if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
            is_leap_year = True
        
        # Проверяем корректность дня для февраля
        if is_leap_year:
            # Високосный год - до 29 дней
            if day < 1 or day > 29:
                print("Некорректная дата")
            else:
                print("Корректная дата")
        else:
            # Обычный год - до 28 дней
            if day < 1 or day > 28:
                print("Некорректная дата")
            else:
                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 !