SNT & NSI · TOUS NIVEAUX (2NDE · 1ÈRE · TERMINALE)

Boucles et Répétitions (for, while)

Automatiser la répétition d'instructions avec la boucle bornée for et la boucle conditionnelle while. Mini-projet du Nombre Mystère.

Boucles et Répétitions (for, while)

Objectifs du chapitre

  • Comprendre l'intérêt des boucles pour automatiser les tâches répétitives sans dupliquer de code.
  • Maîtriser la boucle bornée `for` et l'utilisation de la fonction range().
  • Maîtriser la boucle non bornée / conditionnelle `while` et éviter les boucles infinies.
  • Mettre en œuvre les mécanismes de compteur et d'accumulateur.
  • Réaliser un mini-projet complet : Le jeu interactif du Nombre Mystère.

1. Pourquoi utiliser des boucles ?

En programmation, le principe fondamental est DRY (Don't Repeat Yourself). Si vous devez répéter 100 fois une action (par exemple envoyer 100 paquets de test ou afficher les 10 premières tables de multiplication), vous n'allez pas copier-coller 100 fois la même ligne de code.

On utilise une boucle.

2. La boucle bornée : for ... in range(...)

On utilise la boucle for lorsqu'on connaît à l'avance le nombre de répétitions.

Python
1
2
3
# Répéter 5 fois (de 0 à 4)
for i in range(5):
print("Tour numéro :", i)
À retenir / Remarque

Comment fonctionne range() ?

  • range(5) génère la séquence : 0, 1, 2, 3, 4 (s'arrête avant 5 !).
  • range(1, 6) génère la séquence : 1, 2, 3, 4, 5.
  • range(0, 10, 2) génère de 0 à 8 avec un pas de 2 : 0, 2, 4, 6, 8.

Exemple : Table de multiplication

Python
1
2
3
4
5
nombre = int(input("Table de multiplication souhaitée : "))
for i in range(1, 11):
resultat = nombre * i
print(f"{nombre} x {i} = {resultat}")
Exercice

Exercice 1 : Affichage des carrés d'entiers avec une boucle for

Écrivez un programme Python qui utilise une boucle for pour afficher le carré des nombres de 1 à 10 sous la forme : Le carré de 1 est 1 Le carré de 2 est 4 ... Le carré de 10 est 100

3. La boucle conditionnelle : while

On utilise la boucle while (qui signifie « tant que ») lorsque le nombre de répétitions n'est pas connu à l'avance et dépend d'une condition qui évolue au fil du temps.

Python
1
2
3
4
5
6
mot_de_passe = ""
while mot_de_passe != "snt2026":
mot_de_passe = input("Entrez le mot de passe secret : ")
print("Accès déverrouillé avec succès !")
Attention

Attention au piège de la boucle infinie !

Si la condition d'une boucle while reste toujours vraie et ne devient jamais fausse, le programme tourne indéfiniment et se bloque. Il faut toujours s'assurer qu'une variable évolue à l'intérieur de la boucle pour atteindre la condition d'arrêt.

Exercice

Exercice 2 : Compte à rebours avec boucle while

Écrivez un programme Python avec une boucle while qui démarre à 10 et décrémente un compteur d'une unité à chaque tour jusqu'à 0, puis affiche "Décollage réussi !".

4. Compteurs et Accumulateurs

Deux modèles de conception sont omniprésents dans les boucles :

Le Compteur (Compter des occurrences)

Python
1
2
3
4
compteur = 0
for i in range(10):
compteur = compteur + 1 # ou compteur += 1
print(f"La boucle a tourné {compteur} fois.")

L'Accumulateur (Calculer une somme ou un total)

Python
1
2
3
4
somme = 0
for prix in [12.5, 4.0, 19.9, 8.5]:
somme = somme + prix
print(f"Total des achats : {somme} €.")
Exercice

Exercice 3 : Calculateur de moyenne de classe

Écrire un programme Python qui :

  1. Demande combien de notes l'élève souhaite saisir.
  2. Utilise une boucle for et un accumulateur pour additionner chaque note saisie.
  3. Calcule et affiche la moyenne finale sur 20.

5. Mini-Projet Guidé : Le Jeu du Nombre Mystère

Rassemblons toutes les notions apprises : variables, affichage, saisie, conversions, calculs, conditions et boucles !

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import random
# L'ordinateur choisit un nombre aléatoire entre 1 et 100
nombre_secret = random.randint(1, 100)
tentatives = 0
trouve = False
print("=== JEU DU NOMBRE MYSTÈRE (1 à 100) ===")
while not trouve:
proposition = int(input("Votre proposition : "))
tentatives = tentatives + 1
if proposition < nombre_secret:
print("C'est PLUS GRAND !")
elif proposition > nombre_secret:
print("C'est PLUS PETIT !")
else:
trouve = True
print(f"Bravo ! Vous avez trouvé {nombre_secret} en {tentatives} coup(s) !")

Quiz d'auto-évaluation

Question 1 : Nombre d'itérations avec range()

Combien de fois la boucle for i in range(4) va-t-elle s'exécuter ?

Question 2 : Quand utiliser une boucle while ?

Quand doit-on préférer une boucle while à une boucle for ?

Question 3 : Valeur générée par range(2, 8, 2)

Quelles sont les valeurs prises par la variable k dans for k in range(2, 8, 2) ?

Avez-vous compris et assimilé ce cours ?

+50 XP

Étudiez le contenu activement pendant au moins 45 secondes pour pouvoir débloquer la validation au mérite.

Temps d'étude actif :0s / 45s