Mathématiques · CAPCAP
Boucles et conditions : exercices corrigés de CAP
Publié le 9 novembre 2026 · Mis à jour le 9 novembre 2026 · Signaler une erreur
L'essentiel
- Une condition (
if) choisit si un bloc d'instructions s'exécute, selon qu'un test est vrai ou faux. - Une boucle while teste d'abord sa condition, puis répète le bloc tant que cette condition reste vraie 3.
- Une boucle for est bornée : le nombre de passages est connu à l'avance 1.
- Une boucle dont la condition ne devient jamais fausse est une boucle infinie, presque toujours un bug 2.
- Pour réussir un exercice : trace les variables passage par passage dans un tableau, puis vérifie la condition d'arrêt.
Comment utiliser ces exercices
Ces exercices te font travailler les conditions et les boucles en Python. Tu sais déjà utiliser des variables et des instructions : on s'en sert ici à chaque ligne. Les exercices vont du plus simple au plus complet. Cherche d'abord seul(e) avec un papier et un crayon, lis un indice seulement si tu bloques, puis compare avec la correction pas à pas.
Les exercices
Exercice 1 Suivre une boucle while
On considère le programme suivant :
s = 0
i = 1
while i <= 4:
s = s + i
i = i + 1
Quelle est la valeur de s à la fin de l'exécution ?
Indice 1
Fais un tableau avec les colonnes i et s, une ligne par passage.
Indice 2
La boucle s'arrête dès que i vaut 5.
Voir la correction pas à pas
Au départ :
s = 0eti = 1. Le test1 <= 4est vrai, on entre dans la boucle.Passage 1 :
s = 0 + 1 = 1, puisi = 2.Passage 2 :
2 <= 4est vrai.s = 1 + 2 = 3, puisi = 3.Passage 3 :
3 <= 4est vrai.s = 3 + 3 = 6, puisi = 4.Passage 4 :
4 <= 4est vrai.s = 6 + 4 = 10, puisi = 5.Le test
5 <= 4est faux : la boucle s'arrête. Le programme calcule la somme 1 + 2 + 3 + 4.
À la fin, s vaut 10. La condition est testée une fois de plus que le nombre de passages.
Exercice 2 Une remise avec une condition
Un magasin applique 10 % de remise si le prix d'un article dépasse strictement 40 €.
prix = 45
if prix > 40:
prix = prix * 0.9
Quel est le prix final, en euros ?
Indice 1
Teste d'abord la condition : 45 est-il strictement supérieur à 40 ?
Indice 2
Enlever 10 % revient à multiplier par 0,9.
Voir la correction pas à pas
On évalue
prix > 40avecprix = 45:45 > 40est vrai.Le bloc décalé sous le
ifs'exécute donc.On calcule
45 * 0,9 = 40,5.La variable
prixcontient maintenant 40,5.
Le prix final est de 40,5 €. Si le prix avait valu 40, la condition aurait été fausse et le prix serait resté 40 €.
Exercice 3 Compter les passages d'une boucle for
total = 0
for k in range(1, 8):
total = total + 1
En Python, range(1, 8) donne les entiers de 1 à 7 inclus (le 8 est exclu). Combien de fois le bloc est-il exécuté ?
Indice 1
Écris la liste des valeurs prises par k.
Indice 2
Compte-les.
Voir la correction pas à pas
La variable
kprend successivement les valeurs 1, 2, 3, 4, 5, 6, 7.Le bloc s'exécute une fois par valeur.
Le nombre de passages est donc 8 − 1 = 7.
À chaque passage,
totalaugmente de 1 : à la fin,totalvaut aussi 7.
Le bloc est exécuté 7 fois. Avec une boucle for, on connaît le nombre de passages avant même de lancer le programme, ce qui la distingue d'une boucle while.
Exercice 4 Atteindre un objectif d'épargne
Maëlys possède 100 € et ajoute 5 € chaque mois. Elle veut atteindre au moins 130 €.
capital = 100
mois = 0
while capital < 130:
capital = capital + 5
mois = mois + 1
Quelle est la valeur de mois à la fin ?
Indice 1
Écris le capital après chaque mois : 105, 110, …
Indice 2
Attention au test : capital < 130 devient faux quand le capital vaut exactement 130.
Voir la correction pas à pas
Départ :
capital = 100,mois = 0. Le test100 < 130est vrai.Après 1 mois : 105 ; après 2 mois : 110 ; après 3 mois : 115.
Après 4 mois : 120 ; après 5 mois : 125 ; le test
125 < 130est encore vrai.Après 6 mois : 130. Le test
130 < 130est faux, la boucle s'arrête.On retrouve ce résultat par un calcul : (130 − 100) ÷ 5 = 6.
À la fin, mois vaut 6. Une boucle while convient bien ici, car on ne connaît pas le nombre de passages au départ : on répète tant que l'objectif n'est pas atteint.
Exercice 5 Repérer et corriger une boucle infinie
Un élève veut afficher les nombres de 1 à 9, mais son programme ne s'arrête jamais :
i = 1
while i < 10:
print(i)
i = 1
- Explique pourquoi la boucle ne se termine pas.
- Corrige la ligne fautive.
Indice 1
Regarde la valeur de i à la fin de chaque passage.
Indice 2
Que doit faire i pour que la condition i < 10 finisse par devenir fausse ?
Voir la correction pas à pas
À chaque passage, la dernière ligne remet
ià 1.Le test
i < 10est donc toujours vrai : la condition d'arrêt n'est jamais atteinte, c'est une boucle infinie 2.Une telle boucle ne s'arrête que si on interrompt le programme 2.
Pour corriger, on fait avancer
i: on remplace la dernière ligne pari = i + 1.On vérifie avec la trace :
iprend les valeurs 1, 2, …, 9, puis vaut 10, le test est faux et la boucle s'arrête.
La correction est i = i + 1. Avant de lancer une boucle while, demande-toi toujours : « qu'est-ce qui, dans le bloc, finira par rendre la condition fausse ? »
Exercice 6 Un tarif de parking à trois cas
Un parking applique ce tarif :
- jusqu'à 1 heure incluse : gratuit ;
- au-delà de 1 heure et jusqu'à 3 heures incluses : 2 € par heure ;
- au-delà de 3 heures : forfait de 8 €.
duree = 2.5
if duree <= 1:
prix = 0
elif duree <= 3:
prix = 2 * duree
else:
prix = 8
Quel est le prix pour une durée de 2,5 heures ?
Indice 1
Les tests se lisent dans l'ordre, du haut vers le bas.
Indice 2
Dès qu'un test est vrai, les autres branches sont ignorées.
Voir la correction pas à pas
On teste
duree <= 1:2,5 <= 1est faux, on passe au test suivant.On teste
duree <= 3:2,5 <= 3est vrai, ce bloc s'exécute.On calcule
prix = 2 × 2,5 = 5.La branche
elsen'est pas exécutée, car une branche a déjà été choisie.
Le prix est de 5 €. Pour une durée de 4 heures, les deux premiers tests seraient faux et c'est le else qui donnerait 8 €.
Exercice 7 Une population qui double
Une culture de bactéries compte 50 individus au départ et double chaque heure. On lance :
pop = 50
heures = 0
while pop <= 400:
pop = pop * 2
heures = heures + 1
Quelle est la valeur de heures à la fin ? Donne aussi la valeur finale de pop.
Indice 1
Écris la valeur de pop après chaque passage : 100, 200, …
Indice 2
La condition utilise <= : une population égale à 400 fait encore tourner la boucle.
Voir la correction pas à pas
Départ :
pop = 50,heures = 0. Le test50 <= 400est vrai.Passage 1 :
pop = 100,heures = 1.Passage 2 :
100 <= 400est vrai,pop = 200,heures = 2.Passage 3 :
200 <= 400est vrai,pop = 400,heures = 3.Passage 4 :
400 <= 400est vrai aussi, doncpop = 800,heures = 4.Le test
800 <= 400est faux : la boucle s'arrête avecheures = 4etpop = 800.Vérification : 800 ÷ 50 = 16 = 2 × 2 × 2 × 2, soit 4 doublements.
À la fin, heures vaut 4 et pop vaut 800. Si la condition avait été pop < 400, la boucle se serait arrêtée un passage plus tôt, à 3 heures : le choix entre < et <= change le résultat.
Exercice 8 Une condition dans une boucle for
On veut compter les multiples de 3 parmi les entiers de 1 à 20. En Python, i % 3 == 0 signifie que le reste de la division de i par 3 est nul.
compteur = 0
for i in range(1, 21):
if i % 3 == 0:
compteur = compteur + 1
Quelle est la valeur de compteur à la fin ?
Indice 1
La boucle parcourt les entiers de 1 à 20.
Indice 2
Liste les multiples de 3 qui ne dépassent pas 20.
Voir la correction pas à pas
La boucle
forfait varieride 1 à 20, soit 20 passages.À chaque passage, le
ifteste siiest un multiple de 3.Le compteur augmente seulement pour 3, 6, 9, 12, 15 et 18.
Le suivant, 21, est hors de la boucle.
On compte 6 multiples, ce qui correspond à la division entière 20 ÷ 3 = 6 (reste 2).
compteur vaut 6. Cet exercice combine les deux outils : la boucle parcourt les valeurs, la condition choisit celles qu'on retient.
Exercice 9 Sortir d'une boucle avec break
On cherche le premier multiple de 7 strictement supérieur à 50.
n = 51
while True:
if n % 7 == 0:
break
n = n + 1
Quelle est la valeur de n à la fin ? Explique pourquoi la boucle ne tourne pas indéfiniment alors que sa condition est toujours vraie.
Indice 1
Teste 51, 52, 53… et regarde le reste de la division par 7.
Indice 2
Que se passe-t-il quand le if devient vrai ?
Voir la correction pas à pas
La condition
Trueest toujours vraie, mais lebreakdonne une autre sortie de boucle 3.Pour
n = 51: 51 = 7 × 7 + 2, le reste n'est pas nul, on passe à 52.Pour 52, 53, 54, 55 : les restes sont 3, 4, 5, 6, donc jamais nuls.
Pour
n = 56: 56 = 7 × 8, le reste est nul. Leifest vrai etbreakest exécuté.La boucle s'arrête et
ngarde la valeur 56.
n vaut 56. Une boucle construite ainsi reste correcte à condition que le break finisse forcément par être atteint 2 : ici, tout entier a un multiple de 7 à moins de 7 pas.
Les questions qu'on se pose
Comment choisir entre une boucle for et une boucle while ?
Si tu connais d'avance le nombre de répétitions (parcourir les entiers de 1 à 20, par exemple), prends for : c'est une boucle bornée 1. Si tu répètes jusqu'à ce qu'un objectif soit atteint, sans savoir en combien de passages (atteindre une somme d'épargne), prends while, qui demande une condition d'arrêt 1.
Pourquoi mon programme ne s'arrête-t-il jamais ?
Il y a sans doute une boucle infinie : la condition ne devient jamais fausse 2. Vérifie que le bloc modifie bien la variable utilisée dans le test, et dans le bon sens (une variable qui diminue alors que la condition attend qu'elle grandisse ne s'arrêtera jamais). Fais une trace sur deux ou trois passages : si les valeurs ne se rapprochent pas de la sortie, tu tiens l'erreur.
Une boucle while peut-elle ne jamais s'exécuter ?
Oui. La condition est évaluée avant le bloc : si elle est fausse dès le premier test, le bloc n'est pas exécuté du tout 3. Par exemple, avec n = 10 et while n < 5:, rien ne se passe.
Sources
- Algorithmique et programmation - Ressources d'accompagnement, Éduscol. Consulté le 9 novembre 2026.
- Boucle infinie, Wikipédia. Consulté le 9 novembre 2026.
- Boucle while, 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.