Python au lycée (2) : Les instructions conditionnelles
Exercices
Python : Année bissextile
15 minutes
Votre progression
Créez un compte gratuit pour suivre votre avancement et reprendre où vous avez laissé.
Créer un compteObjectif 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 $).
- Que renvoie l'instruction Python annee % 4 == 0 ?
- Écrire une fonction Python est_bissextile qui prend en argument un entier annee et renvoie True si l'année est bissextile, False sinon.
- Tester la fonction avec les années $ 2023 $, $ 2024 $, $ 1900 $, $ 2000 $ et $ 2100 $.
Corrigé
- 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.
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 FalseOn 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 == 0On 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.