Nous souhaitons créer un programme qui nous affiche tous les nombres de 1 à 5, donc dont l’exécution serait la suivante :
1 2 3 4 5
Une façon particulièrement vilaine de procéder serait d’écrire 5
print
successifs, avec la laideur des copier/coller que
cela impliquerait. Nous allons étudier un moyen de
coder ce type de programme avec un peu plus d’élégance.
Une boucle permet d’exécuter plusieurs fois de suite une même séquence d’instructions. Cette ensemble d’instructions s’appelle le corps de la boucle. Chaque exécution du corps d’une boucle s’appelle une itération, ou plus informellement un passage dans la boucle. Lorsque l’on s’apprête à exécuter la première itération, on dit que l’on entre dans la boucle, lorsque la dernière itération est terminée, on dit qu’on sort de la boucle. Il existe deux types de boucle :
while
for
Chacune de ces boucles a ses avantages et ses inconvénients. Nous les passerons en revue ultérieurement.
while
En Python, la boucle tant que se code de la façon suivante :
while(<condition>): <instructions> |
Les instructions du corps de la boucle sont indentées. La condition est évaluée avant chaque passage dans la boucle, à chaque fois qu’elle est vérifiée, on exécute les instructions de la boucle. Un fois que la condition n’est plus vérifiée, l’exécution se poursuit après l’accolade fermante. Affichons par exemple tous les nombres de 1 à 5 dans l’ordre croissant,
i = 1 while (i <= 5): print(i) i += 1
Ce programme initialise i à 1 et tant que la valeur de i n’éxcède pas 5, cette valeur est affichée puis incrémentée. Les instructions se trouvant dans le corps de la boucle sont donc exécutées 5 fois de suite. La variable i s’appelle un compteur, on gère la boucle par incrémentations successives de i et on sort de la boucle une fois que i a atteint une certaine valeur. L’initialisation du compteur est très importante ! Si vous n’initialisez pas i explicitement, alors cette variable contiendra n’importe quelle valeur et votre programme ne se comportera pas du tout comme prévu. Notez bien par ailleurs qu’il y a deux points après la parenthèse.
for
On utilise une boucle
for
lorsque l’on connait en entrant
dans la boucle combien d’itérations devront être faites. On évitera
par exemple, de s’en servir pour contrôler une saisie.
Commençons par donner sa syntaxe :
for <compteur> in range (<premiere valeur>, <derniere valeur + 1>): <instructions> |
Le <compteur> est déclaré dans l’entête de la boucle et est automatiquement initialisé à <premiere valeur>. Le compteur est ensuite automatiquement incrémenté entre les itérations jusqu’à ce qu’il atteigne la <derniere valeur>.
Par exemple, on réécrit l’affiche des 5 premiers entiers de la sorte :
for i in range(1, 6): print(i)
Attention ! Remarquez bien que la borne supérieure utilisée dans l’entête est 6 !