Aller au contenu

Sciences numériques et technologie · Seconde

Conditions et boucles en Python : exercices de Seconde

Publié le 9 novembre 2026 · Mis à jour le 9 novembre 2026 · Signaler une erreur

L'essentiel

  • Une condition (if, elif, else) fait choisir au programme les instructions à exécuter selon qu'un test est vrai ou faux.2
  • for … in range() répète des instructions un nombre défini de fois ; while les répète tant qu'une condition reste vérifiée.3
  • Avec while, la condition est évaluée avant chaque tour : si elle est fausse dès le départ, le corps ne s'exécute jamais.4
  • Une boucle while doit modifier ce qui est testé, sinon la condition d'arrêt n'est jamais atteinte et la boucle est infinie.1
  • Pour réussir un exercice : fais un tableau de suivi des variables, tour par tour, avant de donner le résultat.

Comment utiliser ces exercices

Ces exercices te font travailler sur les instructions conditionnelles et les boucles, deux outils qui permettent à un programme de ne pas suivre toujours le même chemin et de ne pas répéter à la main la même ligne. Tu as déjà rencontré les variables et leurs types : on s'en sert ici à chaque ligne. Essaie chaque énoncé sur papier avant de regarder les indices, puis la correction. Si tu as Python sous la main, tape le programme pour vérifier ton résultat, mais commence toujours par prévoir ce qu'il va afficher.

Les exercices

Exercice 1 Majeur ou mineur ?

★☆☆Environ 5 min

On considère le programme suivant :

age = 16
if age >= 18:
    print("Tu es majeur")
else:
    print("Tu es mineur")
print("Fin")
  1. Qu'affiche ce programme ?
  2. Qu'affiche-t-il si on remplace la première ligne par age = 18 ?
Indice 1

Commence par dire si le test age >= 18 est vrai ou faux.

Indice 2

La dernière ligne print("Fin") n'est pas décalée : elle ne dépend pas du if.

Voir la correction pas à pas
  1. Avec age = 16, le test 16 >= 18 est faux. Le bloc du if est ignoré et c'est le bloc du else qui s'exécute.

  2. Le programme affiche donc Tu es mineur.

  3. La ligne print("Fin") n'est pas indentée : elle s'exécute dans tous les cas. Le programme affiche ensuite Fin.

  4. Avec age = 18, le test 18 >= 18 est vrai car l'opérateur >= signifie « supérieur ou égal ».3 Le programme affiche Tu es majeur, puis Fin.

Une condition ne choisit qu'une seule branche. Les lignes placées après le bloc, sans décalage, s'exécutent toujours.

Exercice 2 Somme avec une boucle for

★☆☆Environ 6 min

Voici un programme :

s = 0
for i in range(1, 5):
    s = s + i
print(s)

Quelle valeur est affichée ?

Indice 1

Écris les valeurs prises par i : range(1, 5) ne va pas jusqu'à 5.

Indice 2

Fais un tableau avec trois colonnes : tour, i, s à la fin du tour.

Voir la correction pas à pas
  1. Avant la boucle, s vaut 0.

  2. La boucle for répète un nombre défini de fois le bloc.3 Ici i prend les valeurs 1, 2, 3 et 4.

  3. Tour 1 : s = 0 + 1 = 1. Tour 2 : s = 1 + 2 = 3. Tour 3 : s = 3 + 3 = 6. Tour 4 : s = 6 + 4 = 10.

  4. Après le dernier tour, la boucle se termine et print(s) affiche 10.

Le programme calcule 1+2+3+4=101+2+3+4=10. Le print est hors de la boucle : il s'exécute une seule fois, à la fin.

Exercice 3 Doubler jusqu'à dépasser

★☆☆Environ 8 min

x = 1
while x < 50:
    x = x * 2
print(x)

Quelle valeur est affichée ?

Indice 1

Teste la condition x < 50 avant chaque tour, y compris avant le premier.

Indice 2

Les valeurs successives de x sont des puissances de 2.

Voir la correction pas à pas
  1. Au départ, x = 1. La condition 1 < 50 est vraie, donc le bloc s'exécute : x devient 2.

  2. Le programme évalue de nouveau la condition après chaque passage dans le bloc.4 2 < 50 : x devient 4. 4 < 50 : x devient 8. 8 < 50 : x devient 16. 16 < 50 : x devient 32.

  3. 32 < 50 est encore vrai : x devient 64.

  4. Maintenant 64 < 50 est faux : la boucle s'arrête et print(x) affiche 64.

La valeur finale est 26=642^6 = 64. Remarque que 64 dépasse 50 : la condition est testée avant de doubler, pas après.

Exercice 4 Mention selon la note

★★☆Environ 8 min

On écrit ce programme pour afficher une mention à partir d'une note sur 20 :

note = 13
if note >= 16:
    print("Très bien")
elif note >= 14:
    print("Bien")
elif note >= 12:
    print("Assez bien")
elif note >= 10:
    print("Passable")
else:
    print("Insuffisant")
  1. Qu'affiche le programme pour note = 13 ?
  2. Pour note = 16 ?
  3. Que se passerait-il si on remplaçait tous les elif par des if ? Donne la liste des affichages pour note = 13.
Indice 1

Le programme teste les conditions dans l'ordre et s'arrête à la première qui est vraie.

Indice 2

Avec des if indépendants, chaque test est évalué séparément.

Voir la correction pas à pas
  1. Pour 13 : 13 >= 16 est faux, 13 >= 14 est faux, 13 >= 12 est vrai. Le programme affiche Assez bien. Les tests suivants ne sont pas évalués, car elif n'est examiné que si les précédents ont échoué.

  2. Pour 16 : 16 >= 16 est vrai dès le premier test. Le programme affiche Très bien.

  3. Avec des if séparés et note = 13, 13 >= 16 et 13 >= 14 sont faux, mais 13 >= 12 est vrai (on affiche Assez bien) et 13 >= 10 aussi (on affiche Passable). Le else du dernier if ne s'exécute pas.

  4. Le programme afficherait donc deux lignes : Assez bien puis Passable, ce qui est faux.

elif crée une chaîne exclusive : une seule branche est choisie. Le sens de l'ordre compte : on teste du seuil le plus haut au plus bas.

Exercice 5 Combien de tours ?

★★☆Environ 10 min

n = 100
compteur = 0
while n > 10:
    n = n - 15
    compteur = compteur + 1
print(compteur)

Quelle valeur est affichée pour compteur ?

Indice 1

Écris la valeur de n à la fin de chaque tour.

Indice 2

La boucle s'arrête quand n > 10 devient faux, donc quand n vaut 10 ou moins.

Voir la correction pas à pas
  1. Au départ, n = 100 et compteur = 0.

  2. Tour 1 : 100 > 10 est vrai, n = 85, compteur = 1. Tour 2 : n = 70, compteur = 2. Tour 3 : n = 55, compteur = 3.

  3. Tour 4 : n = 40, compteur = 4. Tour 5 : n = 25, compteur = 5. Tour 6 : n = 10, compteur = 6.

  4. Le test 10 > 10 est faux (l'inégalité est stricte) : la boucle s'arrête. Le programme affiche 6.

On retrouve le résultat par un calcul : il faut retirer 15 jusqu'à passer de 100 à 10, soit 100−1015=6\frac{100-10}{15}=6 retraits. Attention à l'inégalité stricte : avec n >= 10, il y aurait un tour de plus.

Exercice 6 Somme des multiples de 3

★★☆Environ 10 min

total = 0
for i in range(1, 30):
    if i % 3 == 0:
        total = total + i
print(total)

L'opération i % 3 donne le reste de la division de i par 3. Quelle valeur est affichée ?

Indice 1

i % 3 == 0 signifie que i est un multiple de 3.

Indice 2

Dresse la liste des multiples de 3 compris entre 1 et 29.

Voir la correction pas à pas
  1. La boucle fait varier i de 1 à 29. Le if filtre : on n'ajoute i à total que si le test est vrai.3

  2. Les valeurs de i retenues sont 3, 6, 9, 12, 15, 18, 21, 24 et 27. Le nombre 30 n'est pas atteint, car range(1, 30) s'arrête à 29.

  3. On calcule 3×(1+2+3+4+5+6+7+8+9)=3×453\times(1+2+3+4+5+6+7+8+9)=3\times45.

  4. Le programme affiche 135.

Ici, la condition est à l'intérieur de la boucle : à chaque tour, le programme décide s'il ajoute ou non la valeur.

Exercice 7 Chasse à la boucle infinie

★★☆Environ 8 min

Un élève écrit ce programme pour afficher les nombres de 1 à 5 :

i = 1
while i <= 5:
    print(i)
  1. Pourquoi ce programme ne s'arrête-t-il jamais ?
  2. Corrige-le.
  3. Le programme corrigé affiche-t-il bien 5 ?
Indice 1

Regarde si la valeur de i change dans le bloc.

Indice 2

Une ligne manque dans le bloc, avec le même décalage que print.

Voir la correction pas à pas
  1. La variable i vaut 1 et ne change jamais dans le bloc. Le test i <= 5 reste donc toujours vrai : la condition d'arrêt n'est jamais atteinte, la boucle est infinie.1

  2. Pour corriger, on ajoute une ligne qui fait évoluer la variable testée : i = i + 1, indentée comme print(i).

  3. Programme corrigé : i = 1, puis while i <= 5:, puis print(i) et i = i + 1 dans le bloc.

  4. Au tour où i vaut 5, le test 5 <= 5 est vrai : 5 est affiché, puis i passe à 6. Le test 6 <= 5 est faux, la boucle s'arrête. Le programme affiche bien 1, 2, 3, 4, 5.

Règle à vérifier à chaque while : la variable qui figure dans la condition doit être modifiée dans le bloc, dans le bon sens.

Exercice 8 Placement à intérêts

★★★Environ 12 min

Un capital de 1 000 € augmente de 5 % chaque année. On veut savoir au bout de combien d'années il dépasse ou atteint 1 200 €.

capital = 1000
annees = 0
while capital < 1200:
    capital = capital * 1.05
    annees = annees + 1
print(annees)
  1. Calcule le capital à la fin de chaque tour.
  2. Quelle valeur de annees est affichée ?
Indice 1

Une hausse de 5 % revient à multiplier par 1,05.

Indice 2

Arrondis le capital au centime pour comparer à 1 200.

Voir la correction pas à pas
  1. Départ : capital = 1000, annees = 0. Le test 1000 < 1200 est vrai.

  2. Tour 1 : 1000×1,05=10501000\times1{,}05=1050 €, annees = 1. Tour 2 : 1050×1,05=1102,501050\times1{,}05=1102{,}50 €, annees = 2.

  3. Tour 3 : 1102,5×1,05≈1157,631102{,}5\times1{,}05\approx1157{,}63 €, annees = 3. Le test 1157,63 < 1200 est encore vrai.

  4. Tour 4 : 1157,63×1,05≈1215,511157{,}63\times1{,}05\approx1215{,}51 €, annees = 4. Le test 1215,51 < 1200 est faux : la boucle s'arrête.

  5. Le programme affiche 4.

On ne connaissait pas à l'avance le nombre de répétitions : c'est le cas typique où while est mieux adapté que for. Un calcul direct confirme : il faut le plus petit entier nn tel que 1,05n≥1,21{,}05^n\geq1{,}2, soit n=4n=4.

Exercice 9 Écrire un programme complet

★★★Environ 15 min

Écris un programme Python qui, pour chaque entier n de 1 à 20, affiche :

  • n est pair si n est pair ;
  • n est impair sinon.

Puis modifie ton programme pour qu'il compte combien de nombres pairs il a rencontrés et affiche ce total à la fin.

Indice 1

Un nombre est pair si le reste de sa division par 2 vaut 0 : n % 2 == 0.

Indice 2

Pour compter, utilise une variable initialisée à 0 avant la boucle et augmentée dans la branche des nombres pairs.

Voir la correction pas à pas
  1. On a besoin de répéter 20 fois une action : le nombre de tours est connu à l'avance, on choisit donc for n in range(1, 21). Le nombre 21 est exclu, donc n va bien de 1 à 20.

  2. Dans la boucle, on place un if n % 2 == 0: qui affiche n est pair, puis un else: qui affiche n est impair.3

  3. Pour compter, on écrit compteur = 0 avant la boucle, puis on ajoute compteur = compteur + 1 dans le bloc du if.

  4. Après la boucle (ligne non indentée), on écrit print(compteur). Le programme affiche 10, car il y a dix nombres pairs entre 1 et 20 : 2, 4, …, 20.

Un programme complet combine les trois éléments : une variable initialisée avant la boucle, une boucle qui parcourt les valeurs, une condition qui décide quoi faire de chacune. Ce schéma sert pour tous les problèmes de comptage et de tri.

Les questions qu'on se pose

Comment choisir entre for et while ?

Si tu sais d'avance combien de fois répéter (par exemple 20 fois), prends for … in range(), qui répète un nombre défini de fois.3 Si le nombre de tours dépend d'un résultat (attendre qu'un capital dépasse un seuil), prends while, qui répète tant qu'une condition est vérifiée.3

Que faire quand mon programme tourne sans s'arrêter ?

Interromps-le dans ton éditeur, puis regarde la condition du while. Pose-toi deux questions : la variable testée est-elle modifiée dans le bloc ? Évolue-t-elle dans le bon sens ? Il faut que la condition d'arrêt puisse un jour être atteinte.1 Fais aussi un tableau de suivi pour les trois ou quatre premiers tours.

Un while peut-il ne jamais s'exécuter ?

Oui. La condition est évaluée avant le premier passage : si elle est fausse dès le départ, le bloc est ignoré.4 Par exemple, avec x = 100 et while x < 50:, rien ne se passe.

Sources

  1. Ressources pédagogiques Éduscol - Programmation en Python, Éduscol. Consulté le 9 novembre 2026.
  2. Instructions conditionnelles et itératives, Éduscol STI. Consulté le 9 novembre 2026.
  3. Mémento Python SNT - Premiers pas, Académie de Lyon. Consulté le 9 novembre 2026.
  4. Boucle while, Wikipédia. Consulté le 9 novembre 2026.
  5. 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.

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