- Utiliser for avec range et while
- Construire un accumulateur (somme, compteur)
- Éviter les boucles infinies
Pourquoi des boucles ?
Pour afficher « Bonjour » 1000 fois, tu n’écris pas 1000 lignes. Une boucle répète un bloc d’instructions. Python en propose deux : for quand on sait combien de fois (ou sur quoi) répéter, while quand on répète tant qu’une condition reste vraie.
La boucle for et range
for i in range(5):
print("tour numéro", i)
# range(début, fin, pas) : la fin est EXCLUE
for n in range(2, 11, 2):
print(n) # 2, 4, 6, 8, 10
range(5) produit 0, 1, 2, 3, 4 : on commence à 0 et la borne de fin est exclue. C’est la source d’erreurs numéro un chez les débutants.
On peut aussi parcourir directement une liste ou un texte :
for lettre in "code":
print(lettre.upper())
for fruit in ["pomme", "kiwi", "mangue"]:
print("J'aime la", fruit)
L’accumulateur : le motif le plus utile
On crée une variable avant la boucle, puis on la met à jour à chaque tour. Calcul de la somme de 1 à 100 :
total = 0
for i in range(1, 101):
total = total + i
print(total) # 5050
Même idée pour compter : compteur = compteur + 1 chaque fois qu’une condition est remplie. Combine boucle et condition :
notes = [12, 8, 15, 9, 17, 11]
reussies = 0
for note in notes:
if note >= 10:
reussies += 1 # raccourci de reussies = reussies + 1
print(reussies, "notes sur", len(notes), "sont ≥ 10")
La boucle while
n = 100
etapes = 0
while n > 1:
n = n // 2
etapes += 1
print("Il faut", etapes, "divisions par 2 pour passer de 100 à 1")
Ici on ne sait pas à l’avance combien de tours seront nécessaires : while est le bon outil. Ce motif — diviser par 2 jusqu’à 1 — réapparaîtra dans la leçon sur la recherche dichotomique.
Exercice
Affiche la table de multiplication de 7 (de 7 × 1 à 7 × 10).
Voir une solution
for i in range(1, 11):
print("7 x", i, "=", 7 * i)
Erreurs courantes
- Décalage d’un cran (off-by-one) :
range(10)s’arrête à 9, pas à 10. - Oublier d’initialiser l’accumulateur avant la boucle.
- Remettre l’accumulateur à zéro dans la boucle : il faut l’initialiser une seule fois, avant.
- Modifier une liste pendant qu’on la parcourt : source de comportements inattendus.