Structures logiques répétitives (boucles)
Introduction
La structure répétitive (ou boucle) est une répétition du même bloc de code, jusqu’à l’obtention d’un résultat escompté. L'arrêt de cette boucle se fait selon une condition ou après un certain nombre d'itérations déterminé.
Il existe deux types de boucles en Python : les boucles while
et les boucles for
.
Boucles while
Le traitement s’exécute tant que la condition à l’entrée de la structure est vraie, donc le code est exécuté de 0 à plusieurs fois. La structure se lit : "tant que
la condition
est vraie, exécuter les
instructions
".
Syntaxe Python
while <condition>:
<instructions à répéter>
Exemple 1
compteur = 1
while compteur < 10:
print("compteur = ", compteur)
compteur += 1
Boucle for
Le traitement se répète autant de fois qu'il y a d'éléments dans une collection (un ensemble d'éléments, exemple : une liste). La structure se lit : pour chaque élément
dans la collection
exécuter les
instructions
.
Syntaxe Python
for <c> in <collection>:
<instructions à répéter>
La fonction range()
range()
La fonction native range()
est utilisé lorsqu'on veut itérer à travers une séquence de nombres. Elle est souvent utilisée dans les boucles for.
range(stop)
: génère une séquence de nombres de0
jusqu'àstop-1
. Exemple :

for i in range(10):
print(i)
range(start, stop)
: génère une séquence de nombres destart
jusqu'àstop-1
. Exemple :

for i in range(4, 10):
print(i)
range(start, stop, step)
: génère une séquence de nombres destart
jusqu'àstop-1
par pas destep
. Exemple :

for i in range(4, 10, 2):
print(i)
Les instructions de contrôle des boucles
break
break
Permet de sortir prématurément de la boucle for ou while la plus proche (dans le cas de plusieurs boucles imbriquées).
Exemple
Dans cet exemple, l'exécution de la boucle s'arrête lorsque i est égal à 7. Les valeurs affichées sont 0, 1, 2, 3, 4, 5 et 6.
for i in range(10):
if i == 7:
break
print(i)
continue
continue
Permet de passer immédiatement à l'itération suivante d'une boucle for ou while sans exécuter le reste du code.
Exemple
Dans cet exemple, lorsque i est égal à 3, on passe à l'itération suivante (i=4) sans exécuter le print(i)
. Les valeurs de 0 à 9 sont toutes affichées sauf 3.
for i in range(10):
if i == 3:
continue # Passe à l'itération suivante sans exécuter les instructions suivantes
print(i)
else
else
Une clause else
peut être incluse après une boucle for
ou while
. Le bloc else contient des instructions qui seront exécutées une fois que la boucle est terminée.
Dans une boucle
for
, le blocelse
est exécuté après que la boucle ait atteint sa dernière itération.Dans une boucle
while
, le blocelse
est exécuté après que la condition de la boucle ait atteint la valeurFalse
.
Dans les deux cas, le bloc else
n'est pas exécuté lorsque la boucle a été arrêté via un break
.
Exemple 1
Dans cet exemple, la boucle s'exécute jusqu'à la fin (i==9), donc le bloc else
est exécuté et affiche le message "La boucle est terminée.".
for i in range(10):
print(i)
else:
print("La boucle est terminée.")
Exemple 2
Dans cet exemple, la boucle est interrompue à l'itération 7, donc le bloc else
ne s'exécute pas.
for i in range(10):
if i == 7:
break # Sort de la boucle
print(i)
else:
print("La boucle est terminée.")
Exemple boucles imbriquées
Il est possible d'avoir deux boucles (ou plus) imbriquées l'une à l'intérieur de l'autre.
continue
etbreak
s'appliquent à la boucle la plus proche d'eux. i.e.
Dans l'exemple suivant, si break
s'exécute, on sort de la boucle intérieure (la plus proche), mais on continue l'exécution de la boucle extérieure normalement car break
ne s'applique pas sur celle-ci.
for i in range(1, 4):
print(f"Boucle extérieure, itération {i}")
for j in range(1, 6):
if j == 3:
continue
if i == 2 and j == 4:
break
print(f" Boucle intérieure, itération {j}")
print("-----------------------------------")
Exemple de boucle while True/break
Parfois, nous devons forcer la création de boucles infinies et utiliser le mot clé break
pour en sortir sous une condition. Cette pratique doit cependant être limitée à des cas où un while <condition>
ne s'applique pas.
Exemple
À la place de cette boucle :
while True:
commande = input("Entrer une commande: ")
if commande == "exit":
break
Privilégiez cette boucle :
commande = ""
while commande != "exit":
commande = input("Entrer une commande: ")
Exemples avec des listes
Exemple 1 : parcours d'une liste avec la boucle while
fruits = ['pommes', 'poires', 'bleuets', 'raisins', 'bananes', 'pamplemousse']
i = 0
while i < len(fruits):
print("fruit = ", fruits[i])
i += 1
Exemple 2 : parcours d'une liste par éléments avec la boucle for
fruits = ['pommes', 'poires', 'bleuets', 'raisins', 'bananes', 'pamplemousse']
for fruit in fruits:
print("fruit = ", fruit)
Exemple 3 : parcours d'une liste par les indices avec la boucle for
(Voir la description de la fonction range())
fruits = ['pommes', 'poires', 'bleuets', 'raisins', 'bananes', 'pamplemousse']
for i in range(len(fruits)):
print("fruit = ", fruits[i])
Référence
Last updated