Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Les boucles for et while

Après cette leçon: Je peux répéter un travail avec une boucle for ou while.

Leçon de 55 min4 commandesLab Linux du quotidien : la trentaine de commandes que les ingénieurs tapent de tête

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

MotCe que ça veut direExemple
Boucleun bloc de lignes qui se répète
Itérationun passage dans la boucle
rangeune suite de nombres entiersrange(1, 6)
Accumulateurune variable qui grossit à chaque tourtotal
Boucle infinieune 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

Code: python
# 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érationjourtotal avanttotal après
1102
2224
3346
4468
55810

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Écrire le fichier somme.py

Commande
printf 'total = 0\nfor i in range(1, 6):\n    total = total + i\nprint(total)\n' > somme.py

Affiché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

Commande
python3 somme.py

Affiché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 ?

Code: python
# 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

Commande
printf 'compteur = 3\nwhile compteur > 0:\n    print(compteur)\n    compteur = compteur - 1\nprint("Partez")\n' > decompte.py

Affiché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

Commande
python3 decompte.py

Affiché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

Code: python
# 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.

À propos de ce labo et de sa source: Lab Linux du quotidien : la trentaine de commandes que les ingénieurs tapent de tête

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.