Vue d'ensemble
Répéter une action, c'est le cœur de l'algorithmique. Python offre deux boucles :
for quand on connaît le nombre de répétitions (ou qu'on parcourt une
collection), et while quand on répète tant qu'une condition est vraie.
Savoir choisir la bonne, la faire progresser et éviter la boucle infinie : voilà les réflexes que
cette fiche installe.
for avec
range, une boucle while qui termine, et le motif de l'accumulateur
(somme, comptage).
Prérequis
- Variables, types et expressions
- Conditions et booléens (pour la condition d'un
while)
Tu « ne vois pas » ce que fait une boucle tour après tour ? C'est le point de bascule de la programmation. Nos mentors alumni X · Centrale · Mines t'entraînent à dérouler une boucle à la main jusqu'à ce que ça devienne un réflexe.
Trouver un mentor →1. La boucle for et range
for i in range(...) répète le bloc indenté en donnant à i des valeurs
successives. range(n) produit les entiers de 0 à n − 1 (donc
n valeurs, mais n est exclu).
for i in range(4):
print(i) # affiche 0, puis 1, puis 2, puis 3
# range(a, b) : de a à b-1
# range(a, b, p) : de a à b-1 par pas de p
for k in range(2, 11, 2):
print(k) # 2, 4, 6, 8, 10range(4)0, 1, 2, 3. Quatre valeurs, mais 4 est exclu. C'est la source d'erreur n°1 : range(4) ne contient pas 4.range(2, 11, 2)Début, fin exclue, pas. On part de 2, on avance de 2 en 2, on s'arrête avant 11 : 2, 4, 6, 8, 10.2. La boucle while
while condition: répète le bloc tant que la condition est vraie.
Il faut que quelque chose change à chaque tour pour que la condition finisse par devenir fausse,
sinon la boucle tourne à l'infini.
n = 1
while n <= 5:
print(n)
n = n + 1 # SANS cette ligne : boucle infinie
print("fini")n = 1Initialisation. On prépare la variable testée par la boucle.while n <= 5:Test avant chaque tour. Si n <= 5 est vrai, on exécute le bloc ; sinon on sort. Ici la boucle affiche 1, 2, 3, 4, 5.n = n + 1La progression. Sans cette mise à jour, n resterait à 1 et la condition serait toujours vraie : boucle infinie.while doit modifier, dans son corps,
une variable qui rapproche la condition de « faux ». Si tu oublies n = n + 1, le
programme ne s'arrête jamais.
3. Le motif de l'accumulateur
Pour additionner ou compter, on utilise une variable
« accumulateur » initialisée avant la boucle et mise à jour à chaque tour. Exemple : la somme
1 + 2 + 3 + 4.
somme = 0
for i in range(1, 5):
somme = somme + i
print(somme) # 10| Tour | i | somme avant | somme après |
|---|---|---|---|
| 1 | 1 | 0 | 1 |
| 2 | 2 | 1 | 3 |
| 3 | 3 | 3 | 6 |
| 4 | 4 | 6 | 10 |
0 et on
fait compteur = compteur + 1 à chaque élément qui vérifie une condition.
4. Exercices d'application
À faire de tête avant d'ouvrir le corrigé.
for i in range(3):
print(i * i)Voir la correction détaillée
range(3) donne i = 0, puis 1, puis 2 (3 est exclu).i * i : 0, puis 1, puis 4.Combien de fois peut-on diviser 100 par 2 (division entière) avant d'atteindre 0 ? Complète :
n = 100
c = 0
while n > 0:
n = n // 2
c = c + 1
print(c)Voir la correction détaillée
Récap final — Ce qu'il faut absolument retenir
Tu dois pouvoir répondre « oui » sans hésiter à chaque point.
- Sais-tu que
range(n)va de 0 àn − 1(n exclu) ? - Sais-tu lire
range(a, b, p)(début, fin exclue, pas) ? - Sais-tu quand choisir
for(nombre de tours connu) plutôt quewhile(jusqu'à une condition) ? - Sais-tu pourquoi une boucle
whiledoit modifier sa variable de test ? - Sais-tu reconnaître et écrire le motif de l'accumulateur (somme, compteur) ?
- Sais-tu dérouler une boucle dans une table de trace ?