Sciences numériques et technologie · Seconde
Conditions et boucles en Python : cours de Seconde (SNT)
Publié le 9 novembre 2026 · Mis à jour le 9 novembre 2026 · Signaler une erreur
L'essentiel
- Une instruction conditionnelle (if, elif, else) fait choisir au programme les instructions à exécuter selon une condition.2
- Une condition est une expression qui est vraie ou fausse, construite avec des comparaisons (<, >, <=, >=, ==, !=) et les mots and, or, not.
- Une boucle for répète un nombre de fois connu à l'avance ; une boucle while répète tant que sa condition est vraie.3
- Avec while, la condition est testée avant chaque tour : si elle est fausse dès le départ, le bloc ne s'exécute jamais.4
- Une boucle dont la condition d'arrêt n'est jamais atteinte est une boucle infinie : le bloc doit faire évoluer la condition pour qu'elle puisse devenir fausse.1
Pourquoi ces deux outils changent tout
Jusqu'ici, tes programmes ressemblaient à une recette lue de haut en bas : une instruction après l'autre, toujours dans le même ordre, toujours les mêmes. Ce genre de programme est utile, mais limité. Un jeu vidéo, une application météo ou un distributeur de billets doivent réagir : faire une chose si le joueur a gagné, une autre s'il a perdu, et recommencer tant que la partie n'est pas finie.
Pour cela, il te faut deux outils. Le premier est la condition : le programme choisit les instructions à exécuter selon une situation.2 Le second est la boucle : le programme répète une séquence d'instructions, par exemple jusqu'à ce qu'un événement se produise.2 Avec les variables que tu connais déjà, ces trois ingrédients (variables, conditions, boucles) suffisent à écrire une grande partie des programmes que tu rencontreras en Seconde.
Dans ce cours, tu vas apprendre :
- à écrire une condition qui est vraie ou fausse ;
- à faire choisir ton programme avec
if,elifetelse; - à répéter un nombre de fois connu avec
for; - à répéter tant qu'une condition est vraie avec
while; - à repérer et corriger les erreurs classiques, dont la boucle infinie.
Les conditions : des expressions vraies ou fausses
Les comparaisons se font avec les opérateurs suivants. Les symboles <= et >= signifient « inférieur ou égal » et « supérieur ou égal ».3
| Symbole | Sens | Exemple | Résultat si x = 7 |
|---|---|---|---|
< |
strictement inférieur | x < 10 |
vrai |
> |
strictement supérieur | x > 10 |
faux |
<= |
inférieur ou égal | x <= 7 |
vrai |
>= |
supérieur ou égal | x >= 8 |
faux |
== |
égal à | x == 7 |
vrai |
!= |
différent de | x != 7 |
faux |
Tu as repéré le piège : pour tester une égalité, on écrit deux signes égal (==). Un seul signe égal (=) sert à affecter une valeur à une variable. Écrire x = 7 range 7 dans x ; écrire x == 7 pose la question « x vaut-il 7 ? ».
Combiner plusieurs conditions
Parfois une seule comparaison ne suffit pas. Tu peux en assembler plusieurs avec trois mots :
and(« et ») : les deux conditions doivent être vraies ;2or(« ou ») : au moins une des deux conditions doit être vraie ;2not(« non ») : le résultat est inversé, doncnot (x > 3)est vrai quand la conditionx > 3est fausse.2
Exemple : pour savoir si un nombre n est compris entre 10 et 20 inclus, on écrit n >= 10 and n <= 20. Les deux comparaisons doivent être vraies en même temps. Pour savoir si une note est hors de la plage normale, on écrit note < 0 or note > 20 : une seule des deux suffit.
L'instruction conditionnelle : if, elif, else
Chaque mot-clé a un rôle précis :
if: exécute des instructions lorsqu'une condition est vérifiée ;3else: exécute d'autres instructions lorsque la condition n'est pas vérifiée ;3elif: ajoute une condition supplémentaire à tester, avec ses propres instructions.3
La syntaxe
age = 17
if age >= 18:
print("Majeur")
else:
print("Mineur")
Regarde bien trois détails, car ce sont eux qui font échouer les programmes des débutants :
- la ligne
ifse termine par deux-points:; - les instructions qui dépendent de la condition sont décalées vers la droite (l'indentation, en général quatre espaces) ;
- le retour au bord gauche marque la fin du bloc.
L'indentation n'est pas décorative en Python : c'est elle qui indique au programme quelles lignes appartiennent à la condition.
Plusieurs cas avec elif
Quand il y a plus de deux situations, on enchaîne les tests :
note = 13
if note >= 16:
mention = "Très bien"
elif note >= 14:
mention = "Bien"
elif note >= 12:
mention = "Assez bien"
else:
mention = "Pas de mention"
print(mention)
Le programme teste les conditions dans l'ordre, de haut en bas. Dès qu'une condition est vraie, il exécute son bloc puis saute tout le reste de la chaîne. Ici, avec note = 13, la première condition est fausse, la deuxième aussi, la troisième est vraie : le programme affiche « Assez bien ». Le else final ne sert que si aucune des conditions précédentes n'est vraie.
La boucle for : répéter un nombre de fois connu
Il existe deux familles de boucles : les boucles bornées, où l'on sait à l'avance combien de tours auront lieu (for), et les boucles non bornées, où l'on s'arrête quand une condition d'arrêt est remplie (while).1 On utilise for ... in range() pour répéter des instructions un nombre défini de fois.3
La fonction range
range fabrique une suite d'entiers que la boucle parcourt un par un :
range(5)donne 0, 1, 2, 3, 4 (cinq valeurs, on part de 0 et on s'arrête avant 5) ;range(2, 6)donne 2, 3, 4, 5 (on part de 2, on s'arrête avant 6) ;range(0, 10, 3)donne 0, 3, 6, 9 (le troisième nombre est le pas).
La borne de fin est toujours exclue. C'est la source d'erreur la plus fréquente : range(1, 5) ne contient pas 5.
Un premier exemple
for i in range(4):
print("Tour numéro", i)
Le programme affiche quatre lignes : tour 0, tour 1, tour 2, tour 3. La variable i prend successivement chaque valeur de la suite ; on l'appelle la variable de boucle. Elle est créée et modifiée automatiquement : tu n'as pas à écrire i = i + 1.
Mélanger boucle et condition
Un bloc de boucle peut contenir un if. Pour compter les multiples de 3 entre 1 et 20 :
compteur = 0
for n in range(1, 21):
if n % 3 == 0:
compteur = compteur + 1
print(compteur)
L'opération n % 3 donne le reste de la division de n par 3. Si ce reste vaut 0, n est un multiple de 3. Les multiples de 3 de 1 à 20 sont 3, 6, 9, 12, 15 et 18 : le programme affiche 6. Remarque l'indentation à deux niveaux : le if est dans la boucle, et compteur = compteur + 1 est dans le if.
- Première valeurLa variable de boucle prend la première valeur.
- Bloc exécutéLes instructions indentées s'exécutent une fois.
- Valeur suivanteLa variable prend la valeur suivante, le bloc recommence.
- FinPlus de valeur : le programme sort de la boucle.
La boucle while : répéter tant que la condition est vraie
Comment la boucle fonctionne
Une boucle while est composée d'un bloc d'instructions et d'une condition.4 Le déroulement est toujours le même :
- la condition est évaluée ;4
- si elle est vraie, le bloc est exécuté ;4
- on revient à l'étape 1 et la condition est de nouveau évaluée ;
- dès que la condition est fausse, la boucle s'arrête et le programme continue après le bloc.4
La condition est donc testée avant chaque tour, y compris le premier. Une conséquence importante : si la condition est déjà fausse au départ, le bloc n'est jamais exécuté.4
Un premier exemple
x = 0
while x < 5:
print(x)
x = x + 1
print("Fini")
Déroulons l'exécution :
| Tour | Valeur de x au test | x < 5 |
Action |
|---|---|---|---|
| 1 | 0 | vrai | affiche 0, x devient 1 |
| 2 | 1 | vrai | affiche 1, x devient 2 |
| 3 | 2 | vrai | affiche 2, x devient 3 |
| 4 | 3 | vrai | affiche 3, x devient 4 |
| 5 | 4 | vrai | affiche 4, x devient 5 |
| test final | 5 | faux | la boucle s'arrête |
Le programme affiche 0, 1, 2, 3, 4 puis « Fini ». La valeur 5 n'est jamais affichée : quand x vaut 5, la condition est fausse et le bloc ne s'exécute plus.
for ou while : comment choisir ?
- Tu sais combien de fois répéter (10 fois, une fois par élément d'une liste, de 1 à 100) : prends
for. - Tu répètes jusqu'à ce qu'un événement arrive (une valeur dépasse un seuil, l'utilisateur donne une bonne réponse) : prends
while.
Tout ce que fait un for peut s'écrire avec un while, mais l'inverse n'est pas toujours simple. Quand les deux sont possibles, for est plus court et évite d'oublier l'incrémentation.
Les pièges : boucle infinie et erreurs fréquentes
Voici le cas le plus courant :
x = 0
while x < 5:
print(x)
Ici, x reste égal à 0 pour toujours. La condition x < 5 est toujours vraie, et le programme affiche 0 sans fin. Il manque la ligne x = x + 1 dans le bloc. Si ton programme semble bloqué dans l'éditeur, interromps-le (dans la plupart des environnements, avec la combinaison Ctrl + C) puis cherche quelle variable de la condition n'est jamais modifiée.
Une autre erreur donne le même résultat : modifier la variable dans le mauvais sens. Avec while x < 5: et x = x - 1, la variable s'éloigne de 5 et la condition reste vraie.
La boucle qui ne s'exécute jamais
Avec while, la condition est testée d'abord : elle peut être fausse dès le départ, et le bloc n'est alors jamais exécuté.4 Exemple : si x = 10 et que la boucle est while x < 5:, rien ne se passe. Ce n'est pas une erreur de Python, c'est le comportement normal. Dans certains langages, une syntaxe particulière existe pour garantir au moins un tour : c'est la boucle « faire ... tant que ».4 En Python, on obtient un effet comparable avec un while True: et un break.
Vérifier un programme à la main : le tableau de suivi
Pour comprendre ce que fait un programme, ou pourquoi il se comporte mal, construis un tableau de suivi : une colonne par variable, une ligne par tour. Écris les valeurs après chaque tour. Si tu vois une valeur qui ne change jamais alors qu'elle figure dans la condition, tu tiens ta boucle infinie.
Pour la boucle somme = 10, qui double tant que somme <= 1000, le tableau est :
| Après le tour | somme | annees |
|---|---|---|
| 0 (départ) | 10 | 0 |
| 1 | 20 | 1 |
| 2 | 40 | 2 |
| 3 | 80 | 3 |
| 4 | 160 | 4 |
| 5 | 320 | 5 |
| 6 | 640 | 6 |
| 7 | 1280 | 7 |
À la fin du septième tour, somme <= 1000 est faux (1280 dépasse 1000) : la boucle s'arrête avec annees = 7.
Associer conditions et boucles dans un même programme
Les vrais programmes mélangent les deux outils. Deux associations reviennent tout le temps : une condition dans une boucle (on filtre ce qu'on traite) et une condition qui pilote la boucle (c'est while).
Cas 1 : une condition dans une boucle for
On veut compter les notes supérieures ou égales à 10 dans une liste.
notes = [8, 12, 15, 9, 10, 17]
reussites = 0
for n in notes:
if n >= 10:
reussites = reussites + 1
print(reussites)
La boucle parcourt directement les éléments de la liste. À chaque tour, le if décide si on compte la note. Les notes 12, 15, 10 et 17 sont supérieures ou égales à 10 : le programme affiche 4. Remarque que 10 est bien compté, grâce à >=.
Cas 2 : une saisie contrôlée avec while
reponse = int(input("Donne un nombre entre 1 et 10 : "))
while reponse < 1 or reponse > 10:
reponse = int(input("Non, entre 1 et 10 : "))
print("Merci")
Le programme repose sur le or : la saisie est refusée si elle est trop petite ou trop grande. Tant que c'est le cas, il redemande. Le corps de la boucle modifie bien reponse, donc la condition peut devenir fausse. C'est exactement la garantie qu'il faut apporter pour éviter une boucle infinie.1
Cas 3 : chercher la première valeur qui convient
On cherche le plus petit entier dont le carré dépasse 200.
n = 1
while n * n <= 200:
n = n + 1
print(n)
On avance tant que le carré ne dépasse pas 200. Comme et , la boucle s'arrête quand n vaut 15 : le programme affiche 15.
| Outil | Rôle | Quand l'utiliser |
|---|---|---|
| if / elif / else | Choisir entre plusieurs cas | Le programme doit réagir selon une situation |
| for ... in range() | Répéter un nombre défini de fois | On connaît le nombre de tours |
| while | Répéter tant qu'une condition est vraie | On répète jusqu'à un événement |
Exercices corrigés
Exercice 1 Somme des entiers de 1 à 6
On considère le programme suivant.
total = 0
for n in range(1, 7):
total = total + n
print(total)
Quelle valeur le programme affiche-t-il ?
Indice 1
Écris la liste des valeurs prises par n. Rappelle-toi que la borne de fin de range est exclue.
Indice 2
Mets à jour total tour après tour dans un petit tableau.
Voir la correction pas à pas
range(1, 7)donne les entiers 1, 2, 3, 4, 5, 6 : le 7 est exclu.Avant la boucle,
totalvaut 0.Tour 1 :
total= 0 + 1 = 1. Tour 2 : 1 + 2 = 3. Tour 3 : 3 + 3 = 6.Tour 4 : 6 + 4 = 10. Tour 5 : 10 + 5 = 15. Tour 6 : 15 + 6 = 21.
Après le dernier tour, le programme affiche 21.
Le programme affiche 21, la somme . Le point à retenir : range(1, 7) s'arrête à 6.
Exercice 2 Combien de tours pour dépasser 100 ?
On considère le programme suivant.
x = 1
tours = 0
while x <= 100:
x = x * 2
tours = tours + 1
print(tours)
Quelle valeur de tours le programme affiche-t-il ?
Indice 1
Construis un tableau de suivi avec les colonnes x et tours.
Indice 2
La boucle s'arrête dès que x est strictement supérieur à 100.
Voir la correction pas à pas
Au départ,
xvaut 1 ettoursvaut 0. La conditionx <= 100est vraie.Tour 1 :
x= 2,tours= 1. Tour 2 :x= 4,tours= 2. Tour 3 :x= 8,tours= 3.Tour 4 :
x= 16,tours= 4. Tour 5 :x= 32,tours= 5. Tour 6 :x= 64,tours= 6.Après le tour 6,
xvaut 64 et la condition64 <= 100est encore vraie : on refait un tour.Tour 7 :
x= 128 ettours= 7. La condition128 <= 100est fausse : la boucle s'arrête.Le programme affiche 7.
Le programme affiche 7. On cherche le plus petit nombre de doublements pour que dépasse strictement 100 : ne suffit pas, dépasse 100.
Exercice 3 Un barème de tarifs avec elif
Une médiathèque applique ce barème d'abonnement : gratuit jusqu'à 5 ans, 10 euros de 6 à 17 ans, 20 euros de 18 à 64 ans, 15 euros à partir de 65 ans.
- Écris un programme Python qui, à partir d'une variable
age, affecte le bon montant à la variableprix. - Quel montant est affecté pour
age = 18? pourage = 65?
Indice 1
Range les conditions dans l'ordre croissant des âges, avec des elif.
Indice 2
Fais attention aux bornes : 17 est dans la tranche 6-17, 18 ne l'est plus.
Voir la correction pas à pas
On teste dans l'ordre croissant. Premier cas :
if age <= 5:puisprix = 0.Deuxième cas :
elif age <= 17:puisprix = 10. On n'a pas besoin de vérifierage >= 6, car on arrive ici seulement siage > 5.Troisième cas :
elif age <= 64:puisprix = 20.Dernier cas :
else:puisprix = 15, pour tous les âges de 65 ans et plus.Pour
age = 18:18 <= 5faux,18 <= 17faux,18 <= 64vrai, doncprixvaut 20 euros.Pour
age = 65: les trois premières conditions sont fausses, on passe auelse, doncprixvaut 15 euros.
Programme complet :
if age <= 5:
prix = 0
elif age <= 17:
prix = 10
elif age <= 64:
prix = 20
else:
prix = 15
Pour 18 ans le prix est 20 euros, pour 65 ans il est de 15 euros. Les valeurs frontières (5, 17, 64) se vérifient toujours avec soin.
Quiz
8 questions · correction immédiate · ton score reste sur ton appareil.
-
elseintroduit le bloc exécuté quand la condition duifest fausse.elifest tentant, mais il ajoute une nouvelle condition à tester, et non un cas par défaut.whilesert à répéter, etrangefabrique une suite d'entiers. -
range(5)donne 0, 1, 2, 3, 4 : cinq valeurs, donc cinq tours. L'erreur tentante est de répondre 6 en pensant que la borne 5 est incluse, alors qu'elle est exclue. -
La condition est évaluée avant le premier tour et
10 < 5est faux : le bloc ne s'exécute pas. Il n'y a pas de boucle infinie, puisque la condition est fausse dès le départ, et ce n'est pas une erreur de syntaxe. -
Dans le deuxième cas,
xne change jamais et la condition reste toujours vraie. Dans le premier,xaugmente jusqu'à 5 et la condition devient fausse. Leforse termine toujours, et le dernier cas ne démarre même pas. -
Avec
and, les deux comparaisons doivent être vraies. Ici25 >= 10est vrai mais25 <= 20est faux, donc l'ensemble est faux. Dire « vrai » revient à confondreandavecor. -
==compare deux valeurs.x = 3est une affectation, donc une erreur dans une condition.=>n'existe pas en Python (on écrit>=), et!=teste la différence, soit l'inverse de ce qu'on veut. -
range(1, 5)donne 1, 2, 3, 4, donc . Répondre 15 revient à inclure le 5, qui est exclu. -
Le nombre de tours est inconnu à l'avance et dépend d'un événement : c'est le rôle de
while. Une boucleforconvient quand on connaît le nombre de répétitions. Unifne teste qu'une fois et ne répète rien.
Les questions qu'on se pose
Pourquoi Python demande-t-il d'indenter ?
En Python, l'indentation indique quelles lignes appartiennent à un bloc : celui d'un if, d'un for ou d'un while. Sans elle, le programme ne saurait pas où le bloc commence et se termine. Utilise toujours le même décalage, en général quatre espaces, et n'oublie pas les deux-points à la fin de la ligne qui ouvre le bloc.
Que faire quand mon programme tourne sans s'arrêter ?
Interromps-le (souvent avec Ctrl + C), puis regarde ta boucle while. Une condition d'arrêt jamais atteinte provoque une boucle infinie.1 Vérifie qu'une variable de la condition est modifiée dans le corps de la boucle, et dans le bon sens. Un tableau de suivi à la main révèle vite la variable qui reste figée.
Comment savoir s'il faut écrire for ou while ?
Pose-toi la question : « Est-ce que je sais combien de tours je vais faire ? » Si oui (10 fois, de 1 à 100), choisis for. Sinon, si tu répètes jusqu'à ce qu'un événement se produise, choisis while.2
Quelle différence entre if et while ?
Les deux testent une condition. Avec if, le bloc s'exécute au plus une fois. Avec while, il se répète tant que la condition reste vraie : la boucle while peut être vue comme une répétition du if.4
Pourquoi range(5) ne contient-il pas 5 ?
La borne de fin de range est exclue. range(5) donne 0, 1, 2, 3, 4, soit cinq valeurs. Pour parcourir de 1 à 10 inclus, on écrit range(1, 11).
Sources
- Ressources pédagogiques Éduscol - Programmation en Python, Éduscol. Consulté le 9 novembre 2026.
- Instructions conditionnelles et itératives, Éduscol STI. Consulté le 9 novembre 2026.
- Mémento Python SNT - Premiers pas, Académie de Lyon. Consulté le 9 novembre 2026.
- Boucle while, Wikipédia. Consulté le 9 novembre 2026.
- Invariant de boucle, Wikipédia. Consulté le 9 novembre 2026.
Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.