Introduction à la boucle ‘while’ en Python
La boucle while
est un outil de contrôle de flux essentiel dans le langage de programmation Python. Elle permet d’exécuter un bloc de code tant qu’une condition spécifiée est vraie.
Voici un exemple simple d’une boucle while
:
i = 0
while i < 5:
print(i)
i += 1
Dans cet exemple, le bloc de code sous la déclaration while
continuera à s’exécuter tant que la variable i
est inférieure à 5. À chaque itération, la valeur de i
est augmentée de 1. Lorsque i
atteint 5, la condition i < 5
devient fausse et la boucle s’arrête.
La boucle while
est particulièrement utile lorsque vous ne savez pas combien de fois vous devez répéter un bloc de code. Par exemple, vous pouvez l’utiliser pour lire des fichiers, attendre qu’un utilisateur entre une entrée spécifique, ou, comme nous le verrons plus tard, calculer des années bissextiles.
Comprendre le concept d’une année bissextile
Une année bissextile est une année spécifique dans le calendrier grégorien, qui est actuellement le calendrier le plus utilisé dans le monde. Une année bissextile a 366 jours au lieu des 365 jours habituels. Cette journée supplémentaire, le 29 février, est ajoutée presque tous les quatre ans.
La raison de l’existence des années bissextiles est de garder notre calendrier en phase avec les saisons astronomiques. Une année solaire (le temps qu’il faut à la Terre pour orbiter autour du Soleil) est d’environ 365,2422 jours. En n’ayant que 365 jours dans notre calendrier, nous perdons environ un quart de jour chaque année. Pour compenser cela, une journée supplémentaire est ajoutée tous les quatre ans.
Cependant, l’ajout d’une journée tous les quatre ans est une légère surcorrection car cela donnerait une année moyenne de 365,25 jours. Pour rectifier cela, une règle supplémentaire est appliquée : les années qui sont divisibles par 100 ne sont pas des années bissextiles, sauf si elles sont également divisibles par 400. Par exemple, l’année 1900 n’était pas une année bissextile, mais l’année 2000 l’était.
En Python, nous pouvons utiliser une boucle while
pour calculer les années bissextiles sur une période donnée, comme nous le verrons dans les sections suivantes.
Implémentation d’une boucle ‘while’ pour calculer les années bissextiles
Pour calculer les années bissextiles en Python, nous pouvons utiliser une boucle while
pour itérer sur une plage d’années. Voici un exemple de code qui fait cela :
année = 2000
while année <= 2020:
if (année % 4 == 0 and année % 100 != 0) or (année % 400 == 0):
print(année, "est une année bissextile.")
année += 1
Dans ce code, nous commençons par définir une variable année
à 2000. Ensuite, nous entrons dans une boucle while
qui continue tant que année
est inférieure ou égale à 2020.
À l’intérieur de la boucle, nous utilisons une instruction if
pour vérifier si l’année actuelle est une année bissextile. Nous utilisons les règles que nous avons discutées précédemment : une année est bissextile si elle est divisible par 4 mais pas par 100, ou si elle est divisible par 400.
Si l’année est bissextile, nous imprimons un message indiquant cela. Enfin, nous augmentons la valeur de année
de 1 à chaque itération de la boucle.
Ce code imprime toutes les années bissextiles entre 2000 et 2020. Vous pouvez ajuster les valeurs de début et de fin pour calculer les années bissextiles sur une période différente. Dans les sections suivantes, nous discuterons de la manière d’optimiser ce code et de le rendre plus efficace.
Optimisation du code : améliorer l’efficacité de la boucle
Dans notre exemple précédent, nous avons utilisé une boucle while
pour itérer sur chaque année dans une plage donnée. Cependant, nous savons que la plupart des années ne sont pas bissextiles. Il serait donc plus efficace de sauter directement aux années qui sont potentiellement bissextiles.
Une façon d’optimiser notre code serait d’augmenter notre variable année
de 4 à chaque itération, au lieu de 1. Cela signifie que nous ne vérifions que les années qui sont divisibles par 4.
Voici à quoi ressemblerait notre code optimisé :
année = 2000
while année <= 2020:
if (année % 100 != 0) or (année % 400 == 0):
print(année, "est une année bissextile.")
année += 4
Dans ce code, nous commençons par définir une variable année
à 2000. Ensuite, nous entrons dans une boucle while
qui continue tant que année
est inférieure ou égale à 2020.
À l’intérieur de la boucle, nous utilisons une instruction if
pour vérifier si l’année actuelle est une année bissextile. Nous utilisons les règles que nous avons discutées précédemment : une année est bissextile si elle n’est pas divisible par 100, ou si elle est divisible par 400.
Si l’année est bissextile, nous imprimons un message indiquant cela. Enfin, nous augmentons la valeur de année
de 4 à chaque itération de la boucle.
Ce code optimisé imprime toutes les années bissextiles entre 2000 et 2020, mais il le fait de manière plus efficace en sautant les années qui ne peuvent pas être bissextiles. Vous pouvez ajuster les valeurs de début et de fin pour calculer les années bissextiles sur une période différente. Dans la section suivante, nous discuterons de quelques exemples et exercices pratiques pour vous aider à maîtriser ce concept.
Exemples et exercices pratiques
Maintenant que vous avez une compréhension de base des boucles while
en Python et du concept d’une année bissextile, voici quelques exemples et exercices pratiques pour vous aider à renforcer votre compréhension.
Exemple : Calculer les années bissextiles dans le futur
Supposons que vous voulez savoir quelles seront les prochaines 10 années bissextiles à partir de l’année actuelle. Vous pouvez utiliser une boucle while
pour cela :
année = 2024 # Remplacez par l'année actuelle
compteur = 0
while compteur < 10:
if (année % 100 != 0) or (année % 400 == 0):
print(année, "est une année bissextile.")
compteur += 1
année += 4
Exercice : Calculer les années bissextiles dans le passé
En utilisant l’exemple ci-dessus comme guide, pouvez-vous écrire un programme qui calcule les 10 dernières années bissextiles avant une année donnée ?
Exercice : Optimiser davantage le code
Pouvez-vous penser à d’autres façons d’optimiser le code pour calculer les années bissextiles ? Par exemple, pouvez-vous modifier le code pour sauter les années qui sont divisibles par 100 mais pas par 400 ?
En travaillant sur ces exemples et exercices, vous deviendrez plus à l’aise avec l’utilisation des boucles while
en Python et la logique derrière le calcul des années bissextiles. Bonne programmation !