Mathématiques · Première technologiqueÉpreuve anticipée de mathématiques
Instructions conditionnelles et boucles : cours de 1re technologique
Publié le 11 novembre 2026 · Mis à jour le 11 novembre 2026 · Signaler une erreur
L'essentiel
- Une instruction conditionnelle (
if,elif,else) choisit quel bloc exécuter selon qu'une condition est vraie ou fausse. - Une boucle bornée (
for) répète un bloc un nombre de fois connu à l'avance ; une boucle non bornée (while) répète tant qu'une condition reste vraie. - En Python, l'indentation délimite les blocs : tout ce qui est décalé sous
if,forouwhileappartient au bloc. - Avec
while, il faut modifier dans la boucle quelque chose qui finit par rendre la condition fausse, sinon la boucle est infinie. - Pour comprendre un programme, fais un tableau de suivi des variables, tour par tour.
Pourquoi des conditions et des boucles ?
Jusqu'ici, tes programmes s'exécutaient ligne après ligne, de haut en bas, sans jamais sauter ni revenir en arrière. Or, pour résoudre de vrais problèmes, il faut pouvoir choisir (si le client a moins de 12 ans, le tarif change) et répéter (calculer la somme de tous les entiers de 1 à 100 sans écrire cent additions).
Ces deux besoins correspondent à deux familles d'outils que tu retrouves dans tous les langages de programmation : les instructions conditionnelles et les boucles. Les documents officiels de mathématiques les placent ensemble dans le chapitre d'algorithmique, avec les variables 1. Tu as déjà manipulé les variables et les affectations ; ce cours s'appuie dessus.
Dans ce cours, nous verrons dans l'ordre :
- les conditions et les booléens, c'est-à-dire ce qui peut être vrai ou faux ;
- l'instruction
ifavec ses varianteselseetelif; - la boucle
for, quand on sait combien de fois répéter ; - la boucle
while, quand on répète tant qu'une condition est vraie ; - les deux mots
continueetelseassociés aux boucles ; - une méthode pour suivre un programme à la main et éviter les erreurs classiques.
Les conditions et les booléens
On fabrique le plus souvent une condition avec un opérateur de comparaison :
| Écriture Python | Signification |
|---|---|
a == b |
a est égal à b |
a != b |
a est différent de b |
a < b |
a est strictement inférieur à b |
a <= b |
a est inférieur ou égal à b |
a > b |
a est strictement supérieur à b |
a >= b |
a est supérieur ou égal à b |
Si x vaut 7, alors x > 5 donne True, x == 8 donne False et x != 8 donne True.
On peut combiner plusieurs conditions avec les mots and, or et not :
a and best vrai seulement si les deux conditions sont vraies ;a or best vrai dès qu'au moins une des deux est vraie ;not aest vrai quandaest fausse.
Par exemple, x >= 10 and x < 20 est vrai pour x = 15, mais faux pour x = 20, car la deuxième condition échoue.
L'instruction conditionnelle if, elif, else
La forme la plus simple s'écrit ainsi :
note = 14
if note >= 10:
print("Admis")
La ligne if se termine par deux-points. Les lignes qui dépendent de la condition sont décalées vers la droite : on dit qu'elles sont indentées. Les blocs de code, qu'ils soient conditionnels ou répétés, reposent sur cette indentation de chaque instruction 2. Si la condition est fausse, Python saute tout le bloc et passe à la suite.
Pour prévoir aussi ce qui se passe quand la condition est fausse, on ajoute else :
note = 8
if note >= 10:
print("Admis")
else:
print("Refusé")
Ici, un seul des deux blocs s'exécute, jamais les deux. Avec note = 8, le programme affiche Refusé.
Quand il y a plus de deux cas, on enchaîne des tests avec elif (contraction de « else if », « sinon si ») :
age = 15
if age < 12:
tarif = 5
elif age < 18:
tarif = 8
else:
tarif = 12
print(tarif)
Python teste les conditions dans l'ordre, s'arrête à la première qui est vraie et ignore les autres. Avec age = 15, la première condition est fausse, la deuxième est vraie : tarif vaut 8.
La boucle bornée for
La fonction range fabrique la suite des entiers que la variable de boucle va parcourir :
range(5)donne 0, 1, 2, 3, 4 (cinq valeurs, on commence à 0 et on s'arrête avant 5) ;range(1, 6)donne 1, 2, 3, 4, 5 ;range(0, 10, 2)donne 0, 2, 4, 6, 8 (le troisième nombre est le pas).
for i in range(1, 4):
print("tour numéro", i)
Ce programme affiche trois lignes, pour i valant 1, puis 2, puis 3. À chaque tour, la variable i reçoit automatiquement la valeur suivante.
Pour sortir de la boucle for, il n'existe pas d'instruction à écrire : il suffit de revenir à la marge, c'est-à-dire à un niveau d'indentation moins profond 2. Tout ce qui est décalé fait partie de la boucle ; la première ligne non décalée s'exécute après la fin des répétitions.
La boucle non bornée while
Le principe : avant chaque tour, Python évalue la condition. Si elle est vraie, il exécute le bloc puis recommence. Si elle est fausse, il sort de la boucle et poursuit après.
n = 1
tours = 0
while n < 100:
n = n * 2
tours = tours + 1
print(n, tours)
Le tableau de suivi montre comment la boucle s'arrête :
| avant le tour | n | n < 100 ? | n après le tour |
|---|---|---|---|
| 1 | 1 | vrai | 2 |
| 2 | 2 | vrai | 4 |
| 3 | 4 | vrai | 8 |
| 4 | 8 | vrai | 16 |
| 5 | 16 | vrai | 32 |
| 6 | 32 | vrai | 64 |
| 7 | 64 | vrai | 128 |
| fin | 128 | faux | sortie |
Le programme affiche 128 7 : on a doublé sept fois pour dépasser 100.
- InitialiserDonne leur valeur de départ aux variables.
- TesterÉcris la condition qui permet de continuer.
- Agir et modifierFais le travail et fais évoluer la variable testée.
- Vérifier la sortieAssure-toi que la condition finit par être fausse.
Choisir entre for et while
| Critère | for | while |
|---|---|---|
| Nombre de tours | Connu à l'avance | Inconnu à l'avance |
| Principe | Parcourt les valeurs de range | Répète tant que la condition est vraie |
| Risque principal | Borne de range décalée d'un cran | Boucle infinie |
| Exemple | Somme de 1 à 10 | Doubler jusqu'à dépasser 100 |
Une règle pratique : si tu peux répondre à la question « combien de fois ? » avant de lancer la boucle, utilise for. Si la réponse dépend du déroulement du calcul (« jusqu'à ce que le seuil soit dépassé »), utilise while.
Tout programme écrit avec un for peut s'écrire avec un while, mais le for est plus court et évite d'oublier de faire avancer le compteur. C'est donc le choix à privilégier dès que le nombre de tours est connu.
Combiner conditions et boucles
La vraie puissance apparaît quand on place une instruction conditionnelle à l'intérieur d'une boucle. Chaque niveau est alors indenté un cran plus loin. Les boucles et les conditions sont des blocs de code où chaque instruction est décalée 2, et on peut les imbriquer.
compteur = 0
for n in range(1, 21):
if n % 3 == 0:
compteur = compteur + 1
print(compteur)
Ce programme compte les multiples de 3 entre 1 et 20 : ce sont 3, 6, 9, 12, 15 et 18, donc il affiche 6. Le if est testé à chaque tour du for, mais l'addition n'a lieu que lorsque la condition est vraie.
Python offre deux mots supplémentaires pour affiner le comportement d'une boucle :
continuepasse directement à l'itération suivante, sans exécuter la fin du bloc 2 ;else, placé après une boucle, exécute un bloc à la sortie normale de la boucle (notion facultative, hors attendus du programme) 2.
for n in range(1, 8):
if n % 2 == 0:
continue
print(n)
Pour chaque nombre pair, continue saute le print. Le programme affiche donc 1, 3, 5, 7.
Suivre un programme à la main
Récapitulatif des structures
Contrôle du flux
- if / elif / else
- Choisir un bloc
- Condition vraie ou fausse
- Un seul bloc exécuté
- for
- Boucle bornée
- range(a, b)
- Nombre de tours connu
- while
- Boucle non bornée
- Tant que vrai
- Attention boucle infinie
- Indentation
- Délimite les blocs
- Même décalage partout
- Deux-points en fin de ligne
Exercices corrigés
Exercice 1 Somme des entiers de 1 à 10
On considère le programme suivant :
s = 0
for i in range(1, 11):
s = s + i
print(s)
Quelle valeur affiche-t-il ? Explique pourquoi range(1, 11) et non range(1, 10).
Indice 1
Écris la liste des valeurs prises par i, puis additionne-les.
Indice 2
Pense à ce que fait range : il s'arrête avant la borne de droite.
Voir la correction pas à pas
range(1, 11)fournit les entiers 1, 2, 3, …, 10 : la borne 11 est exclue.La variable
sest initialisée à 0 avant la boucle.À chaque tour, on ajoute
iàs: 1, 3, 6, 10, 15, 21, 28, 36, 45, 55.Après le dixième tour,
svaut 55 et le programme affiche 55.Avec
range(1, 10), on s'arrêterait à 9 et on obtiendrait 45 : il manquerait le terme 10.
Le programme affiche 55. Pour inclure la valeur 10, la borne de range doit être 11.
Exercice 2 Doubler jusqu'à dépasser 100
On exécute le programme :
n = 1
while n < 100:
n = n * 2
print(n)
Quelle valeur est affichée ? Combien de tours la boucle a-t-elle faits ?
Indice 1
Double n tant que n est strictement inférieur à 100, et note chaque valeur.
Indice 2
Attention : la condition est testée avant chaque tour, pas après.
Voir la correction pas à pas
Avant la boucle,
nvaut 1.Les valeurs successives de
nsont : 2, 4, 8, 16, 32, 64, 128.Pour
n = 64, la conditionn < 100est vraie : la boucle fait un septième tour etndevient 128.Pour
n = 128, la condition128 < 100est fausse : on sort de la boucle.Il y a eu 7 tours, et le programme affiche 128.
Le programme affiche 128, après 7 tours. Cela correspond à , la première puissance de 2 qui dépasse 100.
Exercice 3 Un tarif selon l'âge
Un programme de tarification est écrit ainsi :
if age < 12:
tarif = 5
elif age < 18:
tarif = 8
else:
tarif = 12
Un groupe est composé de trois personnes, âgées de 10, 15 et 30 ans. Quel est le prix total (en euros) payé par le groupe ?
Indice 1
Applique le programme séparément à chaque âge.
Indice 2
Souviens-toi que les tests se font dans l'ordre et que le premier vrai l'emporte.
Voir la correction pas à pas
Pour
age = 10:10 < 12est vrai, donctarif = 5.Pour
age = 15:15 < 12est faux,15 < 18est vrai, donctarif = 8.Pour
age = 30: les deux tests sont faux, on exécute leelse:tarif = 12.Le total est euros.
Le groupe paie 25 euros.
Exercice 4 Compter les multiples de 3
On veut compter combien d'entiers entre 1 et 50 (inclus) sont des multiples de 3.
- Écris un programme Python qui fait ce calcul avec une boucle
foret une instructionif. - Donne la valeur finale du compteur.
Indice 1
Utilise un compteur initialisé à 0 avant la boucle, et le test n % 3 == 0.
Indice 2
Les multiples de 3 jusqu'à 50 vont de 3 à 48.
Voir la correction pas à pas
On initialise
compteur = 0avant la boucle.On parcourt les entiers avec
for n in range(1, 51):, la borne 51 étant exclue.À chaque tour, on teste
if n % 3 == 0:; si c'est vrai, on écritcompteur = compteur + 1dans le bloc indenté.Après la boucle, on affiche
print(compteur)(sans indentation).Les multiples de 3 sont 3, 6, …, 48, soit : il y en a 16.
Le compteur final vaut 16. On peut le vérifier par le calcul : , donc seize multiples de 3 au plus 50.
Quiz
7 questions · correction immédiate · ton score reste sur ton appareil.
-
==compare et renvoieTrueouFalse. Le signe=est l'affectation : il range une valeur dans une variable et ne pose aucune question, doncif x = 7:provoque une erreur. -
15 < 12est faux,15 < 18est vrai : on exécute ce bloc ettarifvaut 8. Les autres blocs sont ignorés, car un seul bloc d'une chaîne if/elif/else s'exécute. Dire 12 reviendrait à oublier que leelifest vrai. -
range(a, b)commence àaet s'arrête avantb: on obtient 2, 3, 4, 5. L'erreur tentante est d'inclure la borne 6, alors qu'elle est exclue. -
range(4)donne 0, 1, 2, 3 ; la somme vaut . On obtiendrait 10 en comptant à tort jusqu'à 4 inclus. -
La variable
nreste égale à 1, doncn < 10reste vraie et la boucle ne s'arrête jamais. Le programme n'affiche pas 1 à 9, car rien n'incrémenten. Remplacer par==ne règle rien. -
Faux :
continuepasse directement à l'itération suivante, sans exécuter la fin du bloc pour le tour en cours. La boucle se poursuit ensuite normalement ; c'est l'erreur à ne pas confondre avec une sortie de boucle. -
Le
forconvient aux boucles bornées, lewhiles'arrête lorsque sa condition devient fausse, et l'indentation délimite le bloc. La proposition « s'arrête toujours toute seule » est fausse : si la condition reste vraie, c'est une boucle infinie.
Les questions qu'on se pose
Quelle est la différence entre une boucle for et une boucle while ?
Avec for, le nombre de répétitions est connu avant le début, par exemple range(10) fait dix tours. Avec while, on répète tant que une condition est vraie, sans savoir à l'avance combien de tours il faudra. Si tu peux annoncer le nombre de tours, prends for ; sinon, prends while.
Pourquoi mon programme ne s'arrête-t-il jamais ?
Il s'agit presque toujours d'une boucle while dont la condition reste vraie. Vérifie que le bloc modifie une variable présente dans la condition, et qu'elle évolue dans le bon sens (par exemple i = i + 1 pour une condition i <= 5). Si tu as oublié cette ligne, la boucle est infinie.
Que se passe-t-il si je me trompe d'indentation ?
Selon le cas, Python signale une erreur d'indentation, ou le programme s'exécute mais autrement que prévu : une instruction trop décalée fait partie de la boucle alors que tu voulais l'exécuter après. En Python, le décalage est la seule façon de dire quelles lignes appartiennent à un bloc. Utilise toujours le même nombre d'espaces (quatre en général).
Comment vérifier un programme avec des boucles à la main ?
Construis un tableau de suivi : une colonne par variable, une ligne par tour. Remplis-le à partir des valeurs avant la boucle, puis déroule chaque tour jusqu'à la sortie. Contrôle aussi les cas limites : la première valeur, la dernière valeur et le cas où la boucle ne s'exécute jamais.
Faut-il écrire elif ou plusieurs if ?
Utilise elif quand les cas s'excluent : un seul doit s'appliquer (tarifs selon l'âge, par exemple). Utilise des if séparés quand plusieurs résultats peuvent se cumuler. Avec des if séparés, chaque test est évalué, alors qu'avec elif, Python s'arrête au premier test vrai.
Sources
- Algorithmique et programmation - Document officiel Éduscol, Éduscol. Consulté le 11 novembre 2026.
- Repères pour l'algorithmique et programmation, Académie de Lille. Consulté le 11 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.