5. Les itérations avec for

On utilise le mot clé for si on veut répéter des instructions un nombre de fois connu à l’avance. Pour ce faire, on l’utilise souvent avec la fonction range

Voici la syntaxe la plus simple :

for i in range(valeur_finale) :
    instructions

En français, ce bout de code se lirait ainsi : pour chaque élément nommé i dans l’intervalle allant de 0 à valeur_finale (non-compris), répéter les instructions. Par exemple :

for i in range(0, 4) :
    print("bonjour")

donne :

bonjour
bonjour
bonjour
bonjour

Question

Si on exécute le code suivant, combien de fois s’affichera le mot bravo ?

for i in range(3) :
    print("bravo")
    print("félicitations")




Question

Quelles sont les erreurs de syntaxe des lignes ci-dessous ?

for x in range(2)
    print("Salut")




Exercice 1

Transformez le triangle en rectangle.

5.1. Variable d’itération

Que représente i dans l’expression for i in range(n) ?
C’est ce qu’on appelle une variable d’itération. Cette variable commence à 0 et augmente de 1 à chaque répétition jusqu’à \(n-1\). Pour visualiser cette valeur nous pouvons l’afficher dans le dessin avec l’instruction write(i).

Le nom i n’est pas obligatoire, on peut lui donner le nom que l’on veut.

Exercice 2

Pour dessiner un escalier, il faut simplement répéter dans une boucle le dessin pour une seule marche.

Ajoutez une ligne en utilisant la variable i pour numéroter les marches sur le dessin.

Exercice 3

Complétez le code pour obtenir la sortie suivante :

A ce passage, m vaut 0
A ce passage, m vaut 1
A ce passage, m vaut 2

5.2. For i in range avec deux paramètres

Pour le moment, on a utilise range avec un seul paramètre. Mais on peut l’utiliser avec deux paramètres :

for i in range(valeur_depart, valeur_finale) :
    instructions

En français, ce bout de code se lirait ainsi : pour chaque élément nommé i dans l’intervalle allant de valeur_depart à valeur_finale (non-compris), répéter les instructions. Par exemple :

for i in range(0, 4) :
    print("bonjour")

donne :

bonjour
bonjour
bonjour
bonjour

La variable d’itération prendrait les valeurs 0, 1, 2 et 3, mais pas 4, car si on ne met qu’un paramètre dans range, valeur_depart vaut par défaut 0.

Question

Question : si on exécute le code suivant, combien de fois s’affichera le mot bravo ?

for i in range(0, 3) :
    print("bravo")
    print("félicitations")




Question

Si on exécute le code suivant, combien de fois s’affichera le mot “félicitations” ?

for i in range(0, 4) :
    print("bravo")
print("félicitations")




Question

Si on exécute le code suivant, combien de fois s’affichera le mot bravo ?

for i in range(3, 5) :
    print("bravo")




Question

Qu’affiche le code suivant ? (Par commodité, on remplace les retours à la ligne par un simple espace.)

for x in range(0,5):
    print(x)





5.3. For i in range avec trois paramètres

La fonction range peut prendre 1, 2 ou 3 arguments. Avec trois arguments, la syntaxe est range(valeur_depart, valeur_fin, pas)

avec :

- `valeur_depart` : la valeur de départ de l'intervalle
- `valeur_fin` : la valeur finale de l'intervalle (non comprise)
- `pas` : la valeur d'incrémentation (combien on ajoute) entre chaque passage dans la boucle

Si on ne met qu’un seul paramètre, valeur_depart = 0 et pas = 1 par défaut.

Si on ne met que deux paramètres: pas = 1 par défaut.

Par exemple, dans le code ci-dessous, la tortue tourne au début de 90°, puis de 85°, 80°, etc, jusqu’à ne tourner finalement que de 5°.

Exercice 4

Complétez le code (arguments de range) pour qu’il produise la sortie suivante :

10
8
6
4
2
0

5.4. Itérations sans range

L’utilisation de range est une possibilité pour faire des itérations parmi beaucoup d’autres. On peut itérer sur n’importe quelle structure, appelée itérable qu’on peut décomposer en éléments, comme une liste ou une chaîne de caractères.

Dans l’exemple suivant, on répète l’instruction print autant de fois qu’il y a de caractères dans Magique!.

Dans l’exemple suivant, on répète l’instruction print autant de fois qu’il y a d’éléments dans la liste (on verra les listes plus en détails ultérieurement).