Python au lycée (2) : Les instructions conditionnelles Exercices

Python : Année bissextile

Durée estimée
15 minutes
Difficulté
Votre progression

Créez un compte gratuit pour suivre votre avancement et reprendre où vous avez laissé.

Créer un compte

Objectif travaillé

Dans le calendrier grégorien, une année est bissextile (elle compte $ 366 $ jours) si et seulement si :

  • elle est divisible par $ 4 $ mais pas par $ 100 $,
  • ou bien elle est divisible par $ 400 $.

Ainsi, $ 2024 $ est bissextile, $ 2023 $ ne l'est pas, $ 1900 $ n'est pas bissextile (divisible par $ 100 $ mais pas par $ 400 $), et $ 2000 $ est bissextile (divisible par $ 400 $).

  1. Que renvoie l'instruction Python annee % 4 == 0 ?
  2. Écrire une fonction Python est_bissextile qui prend en argument un entier annee et renvoie True si l'année est bissextile, False sinon.
  3. Tester la fonction avec les années $ 2023 $, $ 2024 $, $ 1900 $, $ 2000 $ et $ 2100 $.

Corrigé

  1. L'opérateur % (modulo) donne le reste de la division euclidienne. L'instruction annee % 4 == 0 renvoie un booléen : True si le reste de la division de annee par $ 4 $ est nul (donc si l'année est divisible par $ 4 $), False sinon.
  2. On traduit la règle ci-dessus à l'aide des connecteurs logiques and et or :

    def est_bissextile(annee):
        if (annee % 4 == 0 and annee % 100 != 0) or annee % 400 == 0:
            return True
        else:
            return False

    On peut aussi écrire plus directement (le résultat du test est déjà un booléen) :

    def est_bissextile(annee):
        return (annee % 4 == 0 and annee % 100 != 0) or annee % 400 == 0
  3. On applique la fonction à chaque année :

    • $ \text{est\_bissextile}(2023) $ : $ 2023 \div 4 = 505{,}75 $, donc $ 2023 $ n'est pas divisible par $ 4 $. La fonction renvoie False.
    • $ \text{est\_bissextile}(2024) $ : $ 2024 = 4 \times 506 $, donc divisible par $ 4 $. $ 2024 \div 100 = 20{,}24 $, donc non divisible par $ 100 $. La fonction renvoie True.
    • $ \text{est\_bissextile}(1900) $ : $ 1900 $ est divisible par $ 4 $ ($ 1900 = 4 \times 475 $) et par $ 100 $. Il n'est pas divisible par $ 400 $ ($ 1900 \div 400 = 4{,}75 $). La fonction renvoie False.
    • $ \text{est\_bissextile}(2000) $ : $ 2000 = 400 \times 5 $, donc divisible par $ 400 $. La fonction renvoie True.
    • $ \text{est\_bissextile}(2100) $ : divisible par $ 100 $ mais pas par $ 400 $ ($ 2100 \div 400 = 5{,}25 $). La fonction renvoie False.