Parcourir les nombres
Tu sais répéter un bloc, et tu sais faire grandir une variable. Aujourd'hui, on combine les deux gestes, et on découvre que cette combinaison est si courante que Python lui a donné un raccourci. Ce raccourci change la boucle : elle ne se contente plus de répéter, elle parcourt les nombres.
Cours ici, exercices sur Capytale
Cette page est le cours. Les exercices sont sur Capytale, puis on s'entraîne sur py-rates.fr.
Le besoin : compter
Un programme doit afficher les entiers de 1 à 5. Avec ce qu'on sait, on répète, et on fait grandir un compteur :
Relis-le : c'est exactement le motif de la spirale. On crée la variable avant la boucle, on l'utilise dedans, on la fait grandir à la fin de chaque tour. Ça fonctionne, et ce motif à trois gestes, les programmeurs l'écrivent des milliers de fois : compter des tours, numéroter des lignes, parcourir des colonnes…
Trois lignes de rituel pour dire « les nombres de 1 à 5 », c'est lourd. Quand un motif revient sans cesse, un langage finit toujours par lui offrir un raccourci.
Le raccourci : la boucle remplit la variable
Le voici :
Même affichage : 1, 2, 3, 4, 5. Regarde ce qui a disparu : plus de création avant, plus de compteur = compteur + 1 à la fin. La boucle s'en charge : à chaque tour, elle range elle-même la valeur suivante dans compteur.
Et le _ de nos boucles, alors ? Mystère résolu : cette variable existait depuis le début. On l'appelait _ pour dire qu'on ne s'en servait pas. Dès qu'on lui donne un vrai nom, on peut lire sa valeur : la boucle devient un outil de parcours.
La règle des deux bornes
Détail qui pique : pour aller de 1 à 5, on écrit range(1, 6). La règle :
range(a, b)parcourt les entiers deacompris àbnon compris.
La boucle s'arrête juste avant la seconde borne. En échange, le nombre de tours se lit d'un coup d'œil : c'est la différence des bornes (6 - 1 = 5 tours). Tu retrouveras cette convention partout en Python : elle surprend au début, puis elle rend service.
Exercice - Lire
Qu'affiche for n in range(3, 8): print(n) ? Et combien de tours fait cette boucle ?
Correction
3, 4, 5, 6, 7 (un nombre par ligne) : de 3 compris à 8 non compris. Soit 8 - 3 = 5 tours.
Deux usages, deux écritures
On tient donc deux usages de la boucle for, et on les écrira toujours différemment pour les distinguer au premier regard :
| Usage | Écriture | Exemple |
|---|---|---|
| Répéter n fois | une seule valeur, variable ignorée (_) |
for _ in range(4): |
| Parcourir un intervalle | deux bornes, variable nommée | for n in range(1, 6): |
Si tu vois un _, le programme répète, un point c'est tout. Si tu vois un nom et deux bornes, le programme se sert des nombres parcourus.
Lire une boucle : la trace
Quand une boucle se complique, on ne la lit pas « de tête » : on l'exécute sur le papier, exactement comme tu exécutais les programmes de Compute It. L'outil pour ça s'appelle une trace : un tableau qui suit, tour par tour, la valeur de la variable et ce qui s'affiche.
| Tour | n |
Affichage |
|---|---|---|
| 1 | 2 | 20 |
| 2 | 3 | 30 |
| 3 | 4 | 40 |
Trois tours (5 - 2 = 3), et à chaque tour l'affichage est calculé à partir de n. La trace ne devine rien : elle suit la machine pas à pas, et c'est elle qui départage quand on hésite.
Exercice - Lire avec une trace
Fais la trace de ce programme (colonnes : tour, i, affichage), puis donne ce qu'il affiche.
Correction
| Tour | i |
Affichage |
|---|---|---|
| 1 | 0 | 100 |
| 2 | 1 | 101 |
| 3 | 2 | 102 |
| 4 | 3 | 103 |
Quatre tours (4 - 0 = 4), qui affichent 100, 101, 102, 103.
Exercice - Lire avec une trace
Celui-ci mélange le parcours et une variable qu'on fait grandir. Et attention : le print n'est pas indenté. Fais la trace (colonnes : tour, n, total), puis donne ce qui s'affiche.
Correction
| Tour | n |
total |
|---|---|---|
| départ | 0 | |
| 1 | 1 | 1 |
| 2 | 2 | 3 |
| 3 | 3 | 6 |
| 4 | 4 | 10 |
Une seule chose s'affiche, après la boucle (le print n'est pas dans le bloc indenté) : 10. Ce programme calcule 1 + 2 + 3 + 4.
À toi d'écrire
Exercice - Écrire
Écris un programme qui affiche les entiers de 5 à 12 compris.
Exercice - Écrire
Écris un programme qui affiche les dizaines : 10, 20, 30… jusqu'à 100. Indice : parcours les entiers de 1 à 10 compris, et affiche autre chose que la variable elle-même.
Exercice - Écrire
Réécris ce programme avec la boucle de parcours, en deux lignes seulement.
Avec la tortue : la spirale serrée
Le nombre parcouru peut servir à autre chose qu'à l'afficher. Souviens-toi de la spirale : et si la longueur du côté était le nombre parcouru lui-même ?
from turtle import Turtle, done
hortense = Turtle()
for longueur in range(1, 100):
hortense.forward(longueur)
hortense.left(90)
done()
Une spirale très serrée : les côtés mesurent 1, 2, 3… 99 pas. Plus de variable à faire grandir : la boucle parcourt les longueurs.
Le raccourci ne remplace pas tout
Le parcours avance de 1 en 1, toujours. Notre spirale de la dernière séance grandissait de 10 en 10 : pour elle, le geste longueur = longueur + 10 reste le bon outil. Le raccourci couvre le cas le plus courant ; la variable qu'on fait grandir couvre tous les autres (grandir de 10, doubler, redescendre…).
S'entraîner : Py-Rates
À faire
Ouvre py-rates.fr et avance dans les niveaux à ton rythme.
Tu y pilotes un personnage en écrivant de vrais programmes Python : tu y réinvestiras les déplacements, les variables, les boucles, et tu y rencontreras des programmes à lire et corriger. Comme toujours : lis l'énoncé, prédis, puis exécute.
Ce qu'on retient
- Le motif créer un compteur, l'utiliser, le faire grandir est si fréquent que Python offre un raccourci :
for n in range(a, b):, où la boucle remplit la variable elle-même. range(a, b)parcourt les entiers deacompris àbnon compris ; le nombre de tours est la différence des bornes.- Le
_était cette variable de boucle, qu'on ignorait. Répéter :for _ in range(4):. Parcourir :for n in range(1, 6):(deux bornes, un nom). - Pour lire une boucle sans se tromper, on fait une trace : un tableau qui suit, tour par tour, la valeur des variables et l'affichage.
- Le parcours avance de 1 en 1 ; pour tout autre rythme, la variable qu'on fait grandir reste l'outil.
- Le cours est ici ; on s'entraîne sur Capytale et py-rates.fr.
Et ensuite
On quitte la tortue pour un nouveau terrain : les images. Tu verras qu'une image se parcourt exactement comme on vient de parcourir les nombres, et que nos coordonnées y trouvent leur emploi.