Aller au contenu

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

★☆☆Environ 5 min

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
  1. Au départ : s = 0 et i = 1. Le test 1 <= 4 est vrai, on entre dans la boucle.

  2. Passage 1 : s = 0 + 1 = 1, puis i = 2.

  3. Passage 2 : 2 <= 4 est vrai. s = 1 + 2 = 3, puis i = 3.

  4. Passage 3 : 3 <= 4 est vrai. s = 3 + 3 = 6, puis i = 4.

  5. Passage 4 : 4 <= 4 est vrai. s = 6 + 4 = 10, puis i = 5.

  6. Le test 5 <= 4 est 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

★☆☆Environ 5 min

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
  1. On évalue prix > 40 avec prix = 45 : 45 > 40 est vrai.

  2. Le bloc décalé sous le if s'exécute donc.

  3. On calcule 45 * 0,9 = 40,5.

  4. La variable prix contient 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

★☆☆Environ 5 min

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
  1. La variable k prend successivement les valeurs 1, 2, 3, 4, 5, 6, 7.

  2. Le bloc s'exécute une fois par valeur.

  3. Le nombre de passages est donc 8 − 1 = 7.

  4. À chaque passage, total augmente de 1 : à la fin, total vaut 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

★★☆Environ 8 min

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
  1. Départ : capital = 100, mois = 0. Le test 100 < 130 est vrai.

  2. Après 1 mois : 105 ; après 2 mois : 110 ; après 3 mois : 115.

  3. Après 4 mois : 120 ; après 5 mois : 125 ; le test 125 < 130 est encore vrai.

  4. Après 6 mois : 130. Le test 130 < 130 est faux, la boucle s'arrête.

  5. 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

★★☆Environ 8 min

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
  1. Explique pourquoi la boucle ne se termine pas.
  2. 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
  1. À chaque passage, la dernière ligne remet i à 1.

  2. Le test i < 10 est donc toujours vrai : la condition d'arrêt n'est jamais atteinte, c'est une boucle infinie 2.

  3. Une telle boucle ne s'arrête que si on interrompt le programme 2.

  4. Pour corriger, on fait avancer i : on remplace la dernière ligne par i = i + 1.

  5. On vérifie avec la trace : i prend 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

★★☆Environ 10 min

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
  1. On teste duree <= 1 : 2,5 <= 1 est faux, on passe au test suivant.

  2. On teste duree <= 3 : 2,5 <= 3 est vrai, ce bloc s'exécute.

  3. On calcule prix = 2 × 2,5 = 5.

  4. La branche else n'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

★★★Environ 12 min

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
  1. Départ : pop = 50, heures = 0. Le test 50 <= 400 est vrai.

  2. Passage 1 : pop = 100, heures = 1.

  3. Passage 2 : 100 <= 400 est vrai, pop = 200, heures = 2.

  4. Passage 3 : 200 <= 400 est vrai, pop = 400, heures = 3.

  5. Passage 4 : 400 <= 400 est vrai aussi, donc pop = 800, heures = 4.

  6. Le test 800 <= 400 est faux : la boucle s'arrête avec heures = 4 et pop = 800.

  7. 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

★★★Environ 12 min

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
  1. La boucle for fait varier i de 1 à 20, soit 20 passages.

  2. À chaque passage, le if teste si i est un multiple de 3.

  3. Le compteur augmente seulement pour 3, 6, 9, 12, 15 et 18.

  4. Le suivant, 21, est hors de la boucle.

  5. 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

★★★Environ 12 min

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
  1. La condition True est toujours vraie, mais le break donne une autre sortie de boucle 3.

  2. Pour n = 51 : 51 = 7 × 7 + 2, le reste n'est pas nul, on passe à 52.

  3. Pour 52, 53, 54, 55 : les restes sont 3, 4, 5, 6, donc jamais nuls.

  4. Pour n = 56 : 56 = 7 × 8, le reste est nul. Le if est vrai et break est exécuté.

  5. La boucle s'arrête et n garde 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

  1. Algorithmique et programmation - Ressources d'accompagnement, Éduscol. Consulté le 9 novembre 2026.
  2. Boucle infinie, Wikipédia. Consulté le 9 novembre 2026.
  3. 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.

Signaler une erreur sur cette page

Je suis en…

Primaire

  • CP Bientôt
  • CE1 Bientôt
  • CE2
  • CM1
  • CM2 Bientôt

Collège

Lycée

Supérieur

  • BTS Bientôt
  • BUT Bientôt
  • Licence Bientôt
  • Prépas Bientôt

Sur cette page