Compter les tickets d’un mois
Une boucle répète un bloc d’instructions. En Python, la boucle for répète un nombre de fois connu, et la boucle while répète tant qu’une condition reste vraie.
Sans boucle, il faudrait écrire trente fois la même ligne pour un mois de tickets de métro. Avec une boucle, il suffit de trois lignes, que le mois ait 30 jours ou 3 000.
À la fin de cette leçon
Remarque
Je peux répéter un travail avec une boucle for ou while.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Boucle | un bloc de lignes qui se répète | |
| Itération | un passage dans la boucle | |
| range | une suite de nombres entiers | range(1, 6) |
| Accumulateur | une variable qui grossit à chaque tour | total |
| Boucle infinie | une boucle dont la condition ne devient jamais fausse |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
for répète un nombre de fois connu
Avec for jour in range(1, 6):, la variable jour prend les valeurs 1, 2, 3, 4 puis 5. range(1, 6) commence à 1 et s’arrête avant 6.
Les lignes décalées en dessous forment le bloc. Il est exécuté une fois par valeur. Chaque passage s’appelle une itération.
Cinq jours de tickets
# Le total d'une semaine de tickets de métro.
total = 0
for jour in range(1, 6):
total = total + 2
print("Jour", jour, "total", total)
# Changez range(1, 6) en range(1, 8) puis relancez.
Exemple travaillé : le total jour après jour
| Itération | jour | total avant | total après |
|---|---|---|---|
| 1 | 1 | 0 | 2 |
| 2 | 2 | 2 | 4 |
| 3 | 3 | 4 | 6 |
| 4 | 4 | 6 | 8 |
| 5 | 5 | 8 | 10 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Écrire le fichier somme.py
printf 'total = 0\nfor i in range(1, 6):\n total = total + i\nprint(total)\n' > somme.pyAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Additionner 1 + 2 + 3 + 4 + 5
python3 somme.pyAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Erreur fréquente
Attention
Beaucoup pensent que range(1, 6) va jusqu’à 6. Il s’arrête avant : 1, 2, 3, 4, 5. Pour aller jusqu’à 6, écrivez range(1, 7). Comptez les valeurs avec la table de trace.
while répète tant que la condition est vraie
La boucle while teste sa condition avant chaque tour. Tant qu’elle est vraie, le bloc recommence. Quand elle devient fausse, le programme passe à la suite.
Il faut donc que le bloc change quelque chose qui rapproche la condition de devenir fausse. Sinon, c’est une boucle infinie : le programme ne s’arrête plus.
Combien de semaines pour un vélo ?
# On met de côté 15 euros par semaine pour un vélo à 90 euros.
epargne = 0
semaines = 0
while epargne < 90:
epargne = epargne + 15
semaines = semaines + 1
print("Il faut", semaines, "semaines")
# Changez 15 en 20 : combien de semaines ?
Écrire le fichier decompte.py
printf 'compteur = 3\nwhile compteur > 0:\n print(compteur)\n compteur = compteur - 1\nprint("Partez")\n' > decompte.pyAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Lancer le compte à rebours
python3 decompte.pyAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
break arrête une boucle, les boucles s’imbriquent
break sort de la boucle tout de suite. On s’en sert quand on a trouvé ce qu’on cherchait.
Une boucle peut aussi contenir une autre boucle. La boucle de l’intérieur fait tous ses tours à chaque tour de celle de l’extérieur. Trois semaines de cinq jours font 3 × 5 = 15 passages.
Premier multiple de 7 au-dessus de 50
# On cherche le premier multiple de 7 au-dessus de 50.
for nombre in range(50, 100):
if nombre % 7 == 0:
print("Trouvé :", nombre)
break
Pour aller plus loin
Écrivez une boucle for imbriquée qui affiche une table de multiplication de 1 à 5. La boucle de l’extérieur donne ligne, celle de l’intérieur colonne.
Affichez ligne * colonne pour chaque couple. Combien de nombres le programme affiche-t-il au total ? Vérifiez avec une table de trace partielle.