Image de couverture de Boucles et contrôle de flux en Python : for, while, break et continue

En un coup d’œil

Temps de lecture

~200 mots/min

Publié

il y a 1 mois

Jun 13, 2026 · Mis à jour Jul 2, 2026

Vues

278

Total depuis le début

Boucles et contrôle de flux en Python : for, while, break et continue

Les ordinateurs existent pour répéter des tâches. Une personne qui devrait additionner un million de nombres abandonnerait ; une boucle le fait avant même que vous ayez fini de cligner des yeux. Cette leçon présente les deux boucles de Python et les instructions de contrôle qui les pilotent, et elle le fait avec soin, car c'est avec les boucles que les programmeurs débutants ressentent pour la première fois l'écart entre lire du code et l'écrire. À la fin, vous aurez écrit des tables de multiplication, additionné des séries, recherché des valeurs, validé des saisies et résolu le FizzBuzz, l'exercice d'échauffement d'entretien le plus célèbre au monde.

Les deux boucles se partagent le travail de manière nette. Utilisez for quand vous savez sur quelle collection d'éléments vous itérez : chaque nombre d'un intervalle, chaque caractère d'une chaîne, chaque ligne d'un fichier. Utilisez while quand vous connaissez seulement la condition d'arrêt : continuer à demander jusqu'à ce que la réponse soit valide, continuer à jouer jusqu'à ce que le joueur quitte. Apprendre quelle boucle un problème réclame constitue la moitié de cette leçon ; la syntaxe en est la moitié facile.

Ce que vous apprendrez dans la partie 3

  • Les boucles while pour les problèmes de type répéter jusqu'à une condition
  • Les boucles for avec range, les chaînes et les collections
  • break pour quitter une boucle prématurément et continue pour sauter une itération
  • La clause else sur les boucles, et quand elle est réellement utile
  • Les boucles imbriquées et le motif de la table de multiplication
  • Les motifs d'accumulateur, de compteur et de recherche utilisés dans tout code réel

Remarque

Avant de commencer

Vous avez besoin des variables et des f-strings de la partie 1 et des conditions de la partie 2, car toute boucle intéressante contient un if. Le playground ci-dessous exécute tous les exemples en direct.

1. La boucle while : répéter jusqu'à nouvel ordre

Une boucle while est un if qui se répète. Python vérifie la condition ; si elle est évaluée comme vraie, le bloc s'exécute, puis la condition est vérifiée à nouveau, encore et encore jusqu'à ce que la vérification échoue. Cette structure vous impose un devoir sacré : quelque chose à l'intérieur du bloc doit finir par modifier la condition, sinon la boucle ne se termine jamais. Tous les programmeurs en vie ont écrit une boucle infinie par accident ; dans un terminal, Ctrl+C l'interrompt, et dans notre playground, l'exécuteur la coupe tout simplement.

countdown = 5
while countdown > 0:
    print(countdown)
    countdown -= 1      # the line that makes the loop finite
print("Liftoff!")

# 5  4  3  2  1  Liftoff!

Tracez-la une fois à la main, comme vous avez tracé l'échelle des notes dans la partie 2. countdown commence à 5, la condition 5 > 0 est vraie, on affiche et on décrémente. Le corps de la boucle s'exécute cinq fois au total, et quand countdown atteint 0, la condition échoue enfin et l'exécution passe à la ligne de décollage. Cette habitude de tracer une boucle à la main pour les deux premières et les deux dernières itérations vous évitera presque tous les bogues de décalage d'indice cette année.

Le cas d'usage honnête de while est celui où le nombre de répétitions est impossible à connaître à l'avance. L'exemple classique est la validation de saisie : demander, vérifier et redemander jusqu'à ce que la réponse soit acceptable. Vous écrirez cette forme exacte dans de vrais programmes constamment, et elle ne peut pas être écrite naturellement avec for, car personne ne sait combien de tentatives l'utilisateur aura besoin.

# Keep asking until we get a valid choice (terminal version)
choice = ""
while choice not in ("rock", "paper", "scissors"):
    choice = input("rock, paper or scissors? ").lower().strip()
print(f"You chose {choice}")

2. La boucle for et range

Une boucle for parcourt les éléments d'une séquence, un par itération, et remet chaque élément à un nom que vous choisissez. La séquence la plus courante dans les premiers codes est range, qui génère à la demande des entiers régulièrement espacés. range(5) produit 0 à 4, range(1, 6) produit 1 à 5, et range(0, 50, 10) compte de dix en dix. Notez l'asymétrie qui piège tout le monde exactement une fois : le début est inclus, la fin est exclue. Cette convention est délibérée, car elle fait que range(len(items)) s'aligne parfaitement avec les indices valides, et les longueurs s'additionnent proprement quand on divise des intervalles.

for i in range(5):
    print(i, end=" ")        # 0 1 2 3 4
print()

for year in range(2024, 2027):
    print(f"Report for {year}")

total = 0
for n in range(1, 101):
    total += n
print(f"1 + 2 + ... + 100 = {total}")   # 5050

Ce dernier exemple est le motif de l'accumulateur, et c'est peut-être la forme la plus réutilisée de toute la programmation : créez une variable avant la boucle, incorporez-y un élément à chaque itération, et utilisez le résultat après. Les sommes, les produits, les comptages, les chaînes concaténées et (à partir de la partie 5) les listes construites sont tous des accumulateurs. Quand un problème dit « total », « compte » ou « combine », vos doigts devraient commencer à taper un accumulateur avant que votre cerveau ait fini de lire.

for ne se limite pas à range. Toute séquence fonctionne, et les chaînes sont des séquences de caractères, ce qui rend le traitement de texte presque sans effort. Compter les voyelles, l'un des exemples pratiques de l'application Learn Python, tient en quatre lignes : un accumulateur, une boucle sur la chaîne, un test d'appartenance et un print.

sentence = "Learn Python by doing"
vowels = 0
for ch in sentence.lower():
    if ch in "aeiou":
        vowels += 1
print(f"{vowels} vowels in: {sentence}")    # 7 vowels

Point de contrôle

Combien de fois le corps de « for i in range(2, 10, 3) » s'exécute-t-il ?

Publicité

3. break, continue et le else de boucle

Deux instructions pilotent une boucle en cours d'exécution. break quitte la boucle immédiatement, en sautant à la première ligne après celle-ci ; continue abandonne l'itération en cours et passe directement à la vérification suivante. break transforme while True, une boucle intentionnellement infinie, en la manière la plus propre d'exprimer des flux de type demander puis décider. continue brille comme un filtre précoce qui garde le code intéressant sans indentation superflue : quand un élément n'est pas pertinent, sautez-le en haut du corps et laissez le vrai travail respirer.

# break: search for the first number divisible by 7 and 5
for n in range(1, 200):
    if n % 7 == 0 and n % 5 == 0:
        print(f"Found it: {n}")    # 35
        break

# continue: process only the valid readings
readings = [21.5, -999, 22.1, -999, 23.8]
for r in readings:
    if r == -999:                  # sensor error code
        continue
    print(f"Temperature: {r}")

Python propose une construction que la plupart des langages n'ont pas : une clause else sur les boucles. Le bloc else s'exécute uniquement quand la boucle se termine sans avoir rencontré de break. La première fois, la lecture surprend, mais cela résout parfaitement le problème de la recherche : si la boucle a été interrompue, on a trouvé l'élément ; si le else s'exécute, on a épuisé les possibilités. Sans cela, il faudrait gérer un drapeau found à la main, ce que le else remplace justement.

target = 17
for n in (4, 9, 12, 21):
    if n == target:
        print("Found the target")
        break
else:
    print(f"{target} is not in the data")   # this runs

4. Boucles imbriquées et table de multiplication

Les boucles s'imbriquent : placez-en une à l'intérieur d'une autre et la boucle interne s'exécute entièrement à chaque passage de la boucle externe. L'exemple canonique, et l'une des leçons les plus populaires de l'application Learn Python, est la table de multiplication. La boucle externe choisit la ligne, la boucle interne parcourt les colonnes, et une f-string maintient l'alignement des nombres. Les boucles imbriquées multiplient rapidement le travail : dix par dix font cent itérations, ce qui constitue aussi une première occasion de réfléchir à la quantité de travail qu'un programme effectue, un fil que nous reprendrons en détail dans la leçon sur les générateurs, Partie 9.

for row in range(1, 6):
    for col in range(1, 6):
        print(f"{row * col:4}", end="")
    print()   # end the row

#    1   2   3   4   5
#    2   4   6   8  10
#    3   6   9  12  15
#    4   8  12  16  20
#    5  10  15  20  25

Point de contrôle

Dans une boucle imbriquée où la boucle externe s'exécute 4 fois et la boucle interne 3 fois à chaque passage, combien de fois l'instruction la plus interne est-elle exécutée ?

5. Mise en pratique : FizzBuzz et compagnie

FizzBuzz est le test classique pour vérifier si quelqu'un sait combiner une boucle avec des conditions : afficher les nombres de 1 à N, mais afficher Fizz pour les multiples de 3, Buzz pour les multiples de 5, et FizzBuzz pour les multiples des deux. Le piège est l'ordre, comme vu dans la Partie 2 : il faut tester la condition la plus spécifique, divisible par les deux, en premier. Le playground ci-dessous contient une version fonctionnelle ainsi que trois exercices qui transforment cette leçon en réflexes. Exécutez-le, cassez-le, corrigez-le.

Playground Python

L'exercice 1 cache une vraie leçon : le cas combiné pour 4 et 6 est leur plus petit commun multiple, 12, et non leur produit 24, et le test modulo doit l'utiliser. De petits puzzles comme celui-ci montrent pourquoi la pratique des boucles est importante ; la syntaxe s'apprend en une heure, mais l'habitude de prédire ce que le code va faire avant de l'exécuter demande des répétitions délibérées. Cinq exercices supplémentaires sur les boucles, avec retour instantané, se trouvent dans le quiz Contrôle de flux de l'application à la fin de cette page.

Publicité

6. Choisir entre for et while

Quelle boucle ce problème requiert-il ?
Vous réfléchissez... Boucle Forme typique
Faire ceci pour chaque élément d'une collection connue for for élément in éléments:
Faire ceci exactement N fois for for i in range(n):
Continuer jusqu'à ce que quelque chose se produise while while not fini:
Demander ou réessayer jusqu'à ce que ce soit valide while while True: ... break
Parcourir deux collections en parallèle for for a, b in zip(xs, ys): (Partie 5)

En cas de doute, utilisez for. Il est plus difficile d'écrire une boucle infinie avec for, la variable de boucle est gérée pour vous, et la plupart des répétitions du monde réel se font de toute façon sur une collection. Réservez while aux répétitions véritablement ouvertes, et lorsque vous l'utilisez, écrivez la ligne qui modifie la condition en premier, avant le corps, pour ne jamais l'oublier.

Il y a aussi une compétence de traduction qui se cache derrière la syntaxe, et il vaut la peine de la pratiquer délibérément : les problèmes réels n'arrivent pas étiquetés avec la boucle qu'ils nécessitent. Une exigence comme « envoyer un rappel à chaque étudiant qui n'a pas payé » doit devenir « parcourir les étudiants, tester une condition, agir sur les correspondances » dans votre tête avant que le moindre code n'apparaisse. Entraînez cette traduction en formulant les problèmes à voix haute dans le langage des boucles : pour chaque élément, faire quoi, sauf si quoi, jusqu'à ce que quoi. Cela semble idiot pendant une semaine, puis cela devient votre façon de lire chaque tâche, et les recruteurs testent exactement cette traduction bien plus souvent qu'ils ne testent la syntaxe.

Une règle de lisibilité vous servira pendant des décennies : quand le corps d'une boucle dépasse quelques lignes, ce corps mérite de devenir une fonction. Une boucle qui lit for commande in commandes: traiter(commande) raconte toute l'histoire en une ligne, alors que quarante lignes en ligne l'enterrent. Vous pourrez le faire correctement après la Partie 4, et une fois que vous le pourrez, la combinaison de petites boucles appelant des fonctions nommées est ce qui donne l'impression que les grands programmes sont petits.

! Erreurs courantes à éviter

  • Oublier de mettre à jour la variable de condition dans une boucle while, créant une boucle infinie.

    Écrivez la ligne de mise à jour (compteur -= 1, fini = ..., un autre appel input) immédiatement lorsque vous écrivez l'en-tête du while, puis remplissez le corps.

  • S'attendre à ce que range(1, 10) inclue 10.

    La valeur d'arrêt est toujours exclue. Pour inclure 10, écrivez range(1, 11). En cas de doute, vérifiez en affichant list(range(...)).

  • Utiliser break dans une boucle imbriquée en espérant qu'il sorte des deux boucles.

    break ne fait sortir que de la boucle la plus interne. Pour quitter les deux, utilisez un indicateur ou, mieux, placez les boucles dans une fonction et utilisez return, comme le montre la partie 4.

  • Modifier une collection pendant qu'on la parcourt.

    Supprimer des éléments d'une liste que l'on est en train d'itérer fait sauter des éléments de manière imprévisible. Parcourez une copie, ou construisez une nouvelle collection avec les éléments que vous conservez ; la partie 5 rend ce motif facile à appliquer.

? Foire aux questions

Quelle est la boucle la plus rapide, for ou while ? +

Pour parcourir une collection, for est à la fois plus rapide et plus clair, car Python gère l'itération en interne. La différence importe bien moins que le choix de la boucle qui exprime votre intention ; le code lisible est optimisé plus tard, le code illisible est réécrit.

Qu'est-ce que la variable de boucle i, et suis-je obligé de l'appeler ainsi ? +

C'est une variable ordinaire que for réaffecte à chaque itération. i est la convention pour un compteur anonyme ; dès que la valeur a un sens, nommez-la : for ligne, for etudiant, for prix. Les noms lisibles ne coûtent rien.

Une boucle for peut-elle compter à rebours ? +

Oui : range(10, 0, -1) donne les valeurs de 10 à 1. Le troisième argument est le pas, et un pas négatif compte à rebours. La valeur d'arrêt est toujours exclue, exactement comme lorsqu'on compte normalement.

Existe-t-il une boucle do-while en Python ? +

Pas en tant que syntaxe. L'idiome est while True avec un break à l'endroit où la condition de sortie devient connue, généralement après que le premier travail a été effectué une fois.

7. Récapitulatif et prochaines étapes

Vous maîtrisez maintenant la seconde moitié du moteur de la programmation : while pour les répétitions ouvertes, for et range pour les collections, break et continue pour le pilotage, le else de boucle pour les recherches, les boucles imbriquées pour les grilles, et le motif d'accumulation qui sous-tend presque tous les calculs. Combiné avec les décisions de la partie 2, vous pouvez déjà exprimer n'importe quel algorithme ; tout ce qui suit dans ce cours vise à mieux les exprimer.

La prochaine étape est la plus grande amélioration de la qualité de vie de tout le programme. Dans la partie 4, les fonctions Python expliquées, vous cessez d'écrire des scripts et commencez à construire des outils réutilisables avec des noms, des entrées et des sorties. Avant de partir, refaites les exercices FizzBuzz ci-dessus une fois sans regarder la solution, et essayez la leçon Contrôle de flux dans l'application Learn Python ci-dessous ; la répétition espacée sur les boucles est payante pour le reste du parcours, que vous pouvez toujours consulter sur le hub de la série.

💡

Conseil de pro

Quand une boucle se comporte mal, ajoutez print(f"itération {i}: variable = {x}") comme première ligne du corps. Observer cinq itérations de valeurs réelles vaut mieux que vingt minutes à fixer l'écran. Supprimez le print une fois terminé ; dans la partie 13, vous passerez aux vrais outils de débogage et de test.

Icône de l'application Android Learn Python

Pratiquez en déplacement

Learn Python, l'application Android gratuite

Chaque sujet de cette série est aussi dans l'application : leçons concises, exemples exécutables, quiz, mini-projets et un environnement Python hors ligne qui fonctionne sur votre téléphone.

Bishrul Haq

Written by

Bishrul Haq

Software engineer writing practical tutorials on Laravel, PHP, Python, and the tools behind real projects. More about me

Newsletter

Want more posts like this?

Get practical software notes and tutorials delivered when something new is published.

Pas de spam. Désinscription à tout moment.

Qu’en avez-vous pensé ?

Commentaires

0
Se connecter ou Créer un compte pour participer à la discussion et réagir à cet article.

Aucun commentaire pour l’instant. Soyez la première personne à donner votre avis.

Related posts

Fonctionnalités essentielles de Pandas en Python : astuces et fonctionnalités

Pandas est l'une de mes bibliothèques Python préférées. Elle est très utile pour visualiser les données de manière claire et structurée. De nos jours, Pandas est largement utilisée en science des données, en apprentissage automatique et dans d'autres domaines.

il y a 6 ans

Comment récupérer des données de Twitter avec Tweepy en Python ?

Pour commencer à travailler avec Python, vous devez avoir Python installé sur votre ordinateur. Si ce n’est pas encore fait, rendez-vous sur le site officiel de Python pour l’installer.

il y a 6 ans

Prédire le revenu par habitant des États-Unis avec la régression linéaire

Python permet de prédire et d'analyser des données à l'aide de la régression linéaire. La régression linéaire est l'une des techniques fondamentales de machine learning ou de statistique conçues pour résoudre des problèmes complexes.

il y a 6 ans

Algorithmes de tri essentiels pour les étudiants en informatique

Les algorithmes sont couramment enseignés dans les cursus d'informatique et de génie logiciel, en licence ou en master. Certains les trouvent difficiles à comprendre parce qu'ils les apprennent par cœur.

il y a 6 ans

Python 3.14 pour les projets réels : Free Threading, JIT, t-strings et Zstandard

Ce qui compte vraiment dans Python 3.14 pour la production : les builds officiels sans GIL, le JIT expérimental, les t-strings pour une interpolation sécurisée, Zstandard dans la bibliothèque standard et un plan d'adoption à faible risque.

il y a 1 mois