3.4. Les boucles¶
Les boucles (« loops » en anglais) permettent au programme de répéter plusieurs instructions sans avoir à réécrire le code plusieurs fois. Elles sont donc utiles, voire nécessaires, en programmation car nous avons souvent besoin de répéter certaines opérations.
Il existe deux types de boucles : while
et for
.
Nous parlerons uniquement de la première dans ce chapitre.
La seconde sera introduite par la suite.
3.4.1. Tant que¶
En Python, while
(« tant que ») est un mot réservé qui permet de répéter un bloc d’instructions tant qu’une condition est vraie.
Le bloc est constitué des instructions qui devront être exécutées à chaque parcours (ou itération) de la boucle.
La syntaxe de la boucle while
est la suivante.
while test_expression:
instructions
La boucle commence par le mot réservé while
, l’expression de test ou condition, et le symbole :
.
Puis suivent les instructions qui devront s’exécuter tant que l’expression de test est vérifiée.
Ces instructions doivent être correctement indentées par rapport au while
.
Note
Comme pour les structures conditionnelles, le bloc d’instructions (corps de la boucle) peut être constitué de plusieurs lignes. Chaque nouvel élément doit être ajouté à la ligne et au même niveau d’indentation que la première ligne du bloc. Chaque niveau d’indentation représente donc un bloc d’instructions. Il est évidemment possible pour une boucle d’être elle-même dans une boucle, ce qui va nécessiter un niveau d’indentation supplémentaire.
La figure 3.5 ci-dessous présente sous forme d’organigramme le schéma d’exécution de la structure conditionnelle while
.
On pourra facilement utiliser une boucle pour afficher, par exemple, tous les nombres entiers entre 0 et 9.
a = 0
while a < 10: # tant que `a` est plus petit que 10
print(a) # on l'affiche
a = a + 1 # puis on l'incrémente de 1
0
1
2
3
4
5
6
7
8
9
Dans l’exemple ci-dessus, on commence par créer une variable a
à laquelle on assigne la valeur de 0.
Ensuite vient la boucle while
.
On lui associe la condition « a
est-il plus petit que 10 ? », puis on indique les instructions à exécuter tant que cette condition est vraie.
Ici, on affiche la valeur de a
puis on l’ui ajoute 1 (on l”incrémente).
L’incrémentation, qui consiste à assigner à une variable sa propre valeur augmentée d’un nombre, généralement 1, est très courante en programmation.
On l’écrit v = v + n
, où v
est la variable à incrémenter et n
le nombre qu’on souhaite lui ajouter.
Cette opération étant fréquemment utilisée, Python propose des raccourcis syntaxiques pour l’incrémentation ainsi que pour d’autre opérations courantes sur les variables.
La table ci-dessous en mentionne quelques-uns.
Raccourcis syntaxiques
Raccourci |
Équivalent |
---|---|
|
|
|
|
|
|
|
|
3.4.2. Modifier le déroulement des boucles¶
Il arrive que l’on souhaite modifier le déroulement d’une boucle en cours de route.
Considérons par exemple le cas du programme suivant qui calcule la somme de valeurs entrées par l’utilisateur jusqu’à ce que ce dernier entre la lettre q
.
stop = False
total = 0
while not stop: # variable booléenne utilisée comme condition d'arrêt
n = input("Valeur suivante (ou 'q') : ")
if n == 'q':
stop = True
else:
total += float(n)
print("Total : " + str(total))
Valeur suivante (ou 'q') : 2
Valeur suivante (ou 'q') : 3
Valeur suivante (ou 'q') : 6
Valeur suivante (ou 'q') : q
Total : 11.0
Déclarer une condition d’arrêt en dehors de la boucle fonctionne comme prévu, mais Python propose une alternative qu’il est bon de connaître.
On peut interrompre une boucle à tout moment grâce au mot-clé break
.
Un avantage de cette méthode est que la boucle s’interrompt instantanément et le reste du bloc d’instructions n’est pas exécuté.
total = 0
while True: # boucle sans condition d'arrêt, dite "infinie"
n = input("Valeur suivante (ou 'q') : ")
if n == 'q':
break
total += float(n)
print("Total : " + str(total))
De la même manière, le mot-clé continue
est un raccourci qui permet de passer immédiatement à l’itération suivante de la boucle, sans que le reste du bloc d’instructions ne soit exécuté.
Cela permettra par exemple d’ignorer les valeurs négatives dans notre somme comme illustré ci-dessous (on notera que le même programme peut aisément être réalisé sans utiliser l’instruction continue
).
total = 0
while True:
n = input("Valeur suivante (ou 'q') : ")
if n == 'q':
break
if float(n) < 0:
continue
total += float(n)
print("Total : " + str(total))
La figure 3.6 ci-dessous présente sous forme d’organigramme le principe d’utilisation des instructions break
et continue
dans une boucle while
.