Les boucles permettent de répéter un bloc d'instructions — soit un nombre défini de fois, soit tant qu'une condition est vraie. C'est l'un des piliers absolus de la programmation. Python propose deux boucles : for et while.
Pourquoi des boucles ?
Imaginez que vous voulez afficher les nombres de 1 à 10. Sans boucle :
print(1)
print(2)
print(3)
# ... 7 lignes de plus
print(10)Imaginez maintenant jusqu'à 1000. Impraticable. Les boucles résolvent ce problème :
for i in range(1, 11):
print(i, end=" ")La boucle for
En Python, for ne compte pas comme dans d'autres langages. Il parcourt chaque élément d'une collection.
for <variable> in <collection>:
<instructions>Parcourir une chaîne
Une chaîne est une séquence de caractères, donc itérable :
for lettre in "Python":
print(lettre)Parcourir une liste
Une liste est une suite de valeurs entre crochets — le chapitre suivant lui est consacré. for la parcourt de la même façon, élément par élément :
fruits = ["pomme", "banane", "cerise"]
for fruit in fruits:
print(fruit)Les dictionnaires et les ensembles se parcourent aussi avec for : leurs chapitres montrent comment.
La fonction range()
Pour boucler sur des nombres, on utilise range() qui génère une séquence d'entiers.
| Forme | Génère |
|---|---|
range(n) |
0, 1, 2, ..., n-1 |
range(debut, fin) |
debut, debut+1, ..., fin-1 |
range(debut, fin, pas) |
avec un pas personnalisé |
# range(5) : de 0 à 4
for i in range(5):
print(i, end=" ")# range(1, 6) : de 1 à 5
for i in range(1, 6):
print(i, end=" ")# range(0, 20, 2) : de 0 à 19 par pas de 2
for i in range(0, 20, 2):
print(i, end=" ")# Pas négatif : décompte
for i in range(10, 0, -1):
print(i, end=" ")Exemples d'usage
Calculer une somme :
somme = 0
for i in range(1, 101):
somme += i
print("Somme de 1 à 100 :", somme)Afficher une table de multiplication :
n = 7
for i in range(1, 11):
print(f"{n} × {i} = {n * i}")Parcourir une liste avec son indice :
fruits = ["pomme", "banane", "cerise"]
for i in range(len(fruits)):
print(i, ":", fruits[i])La boucle while
Là où for parcourt une collection, while répète tant qu'une condition est vraie.
while <condition>:
<instructions>Exemple simple — compter de 1 à 5 :
i = 1
while i <= 5:
print(i, end=" ")
i += 1Anatomie :
- On initialise
i = 1. - On teste la condition
i <= 5. - Si vraie, on exécute le bloc.
- On modifie
ipour progresser (sinon → boucle infinie !). - On retourne à l'étape 2.
Cas typique : saisie utilisateur jusqu'à validation
reponse = ""
while reponse not in ("oui", "non"):
reponse = input("Oui ou non ? ").lower().strip()
print("Vous avez répondu :", reponse)for vs while : quand choisir ?
Utiliser for quand... |
Utiliser while quand... |
|---|---|
| On connaît la collection à parcourir | On ne sait pas à l'avance combien d'itérations |
On répète un nombre fixe de fois (range) |
On boucle tant qu'une condition est vraie |
| Parcours d'une liste, chaîne, dict, set | Saisie utilisateur, attente d'un événement |
En Python, on utilise for dans ~90 % des cas. while est réservé aux cas où for ne suffit pas.
Les instructions break et continue
Ces deux instructions permettent de contrôler finement l'exécution d'une boucle.
break — sortir de la boucle
break interrompt immédiatement la boucle, même si la condition est encore vraie.
# Chercher un élément et sortir dès qu'on le trouve
liste = [3, 7, 12, 25, 8, 14]
cible = 25
for n in liste:
if n == cible:
print("Trouvé !")
break
print("Ce n'est pas", n)continue — passer à l'itération suivante
continue saute le reste du bloc et passe directement à l'itération suivante.
# Afficher uniquement les nombres pairs
for n in range(1, 11):
if n % 2 != 0:
continue # on saute les impairs
print(n, end=" ")Boucles imbriquées
On peut mettre une boucle à l'intérieur d'une autre. Utile pour parcourir des structures à deux dimensions.
for i in range(1, 4):
for j in range(1, 4):
print(f"{i}×{j}={i*j}", end=" ")
print() # retour à la ligne après chaque ligneAffichage d'un carré d'étoiles
taille = 5
for ligne in range(taille):
for col in range(taille):
print("*", end=" ")
print()for ... range vs boucle sur une collection
Il existe deux écoles pour parcourir une liste. L'école « Python » est largement préférable.
fruits = ["pomme", "banane", "cerise"]
# ❌ Style non-Pythonique (mais fonctionnel)
for i in range(len(fruits)):
print(i, fruits[i])# ✅ Style Pythonique
for i, fruit in enumerate(fruits):
print(i, fruit)# ✅ Style Pythonique (si on n'a pas besoin de l'indice)
for fruit in fruits:
print(fruit)Le TOSA teste les deux styles — sachez reconnaître le second (plus moderne).
La clause else de boucle (bonus utile)
Python a une particularité : on peut mettre un else à la fin d'une boucle. Il s'exécute si la boucle se termine normalement (sans break).
# Chercher un nombre premier dans une plage
for n in range(2, 10):
if n == 7:
print("Trouvé 7 !")
break
else:
print("Pas trouvé") # ne s'exécute pas ici car on a break
# Version où on ne trouve pas
for n in range(2, 10):
if n == 99:
break
else:
print("99 non trouvé dans la plage") # s'exécutePeu utilisé en pratique, mais à connaître pour le TOSA.
Exercices
print("Hello") ?
for i in range(5):
print("Hello")
i après la boucle ?
for i in range(3):
pass
for i in range(2, 10, 3):
print(i, end=" ")
for i in range(5):
if i == 2:
break
print(i)
for i in range(5):
if i == 2:
continue
print(i)
i = 0
while i < 5:
i += 2
for lettre in "abc":
for chiffre in "12":
print(lettre + chiffre, end=" ")
s après ce code ?
s = 0
for i in range(1, 5):
s += i
Écrivez un programme qui affiche la table de multiplication de n, de 1 à 10.
Exemple pour n = 3 :
3 × 1 = 3
3 × 2 = 6
...
3 × 10 = 30Le signe × peut se taper x ou *.
Calculez dans la variable somme la somme de tous les nombres pairs compris entre 1 et limite (inclus).
L'ordinateur joue seul à « devinez le nombre » : le nombre mystere est compris entre 1 et 100, et il le cherche par dichotomie.
Tant qu'il n'a pas trouvé, il propose le milieu de l'intervalle, (bas + haut) // 2 :
- si la proposition est trop petite, l'intervalle devient
proposition + 1…haut; - si elle est trop grande, il devient
bas…proposition - 1.
Comptez dans essais le nombre de propositions faites, celle qu'il trouve comprise.
Affichez une pyramide d'étoiles de n lignes. Pour n = 5 :
*
* *
* * *
* * * *
* * * * *