Boucle for#

Répétition d'un bloc d'instructions#

La boucle for permet de répéter un bloc d'instructions un nombre de fois connu à l'avance.

for _ in range(nb_repetitions):
  instruction 1
  instruction 2
  ...

Important

En Python, les instructions appartenant à un même bloc d'instructions sont reconnaissables car elles ont toutes exactement la même indentation.

Exemple 1#

Programme

1print("Voici ma punition:")
2for _ in range(10):
3  print("Je dois faire mes devoirs.")
4print("J'ai fini.")

Ordinogramme

Ordinogramme boucle for

Exercice 1#

Que fait le programme suivant?

Modifiez-le pour qu'il affiche 9 fois "Salut".

Modifiez-le pour qu'il affiche:

Salut
Comment ça va?
Salut
Comment ça va?
Salut
Comment ça va?

Modifiez-le pour qu'à la fin du programme, il affiche "Au revoir!".

1for _ in range(6):
2  print("Salut")

Utilisation de la variable de la boucle for#

La boucle for fait plus que juste répéter x fois un bloc d'instructions: pour chaque itération (passage dans la boucle), la variable (dans l'exemple ci-dessous nommée i) va prendre la valeur de l'ensemble range(n), c'est-à-dire l'ensemble des nombres entiers de \(0\) à \(n\) non compris \(\{0; 1; 2; ...; n-1\}\). Il est donc possible d'utiliser la valeur de cette variable dans la boucle.

Important

Dans l'instruction for _ in range(nb_repetitions):, le _ représente une variable à laquelle nous n'avons pas donné de nom. Mais il est possible de donner un nom (en respectant les règles de nommage des variables) si nous avons besoin d'utiliser cette variable dans le bloc d'instructions.

Toutes ces notations sont correctes:

  • for _ in range(3):

  • for nombre in range(3):

  • for i in range(3):

La syntaxe for _ in range(3): est utilisée seulement lorsque nous n'utilisons pas la valeur de la variable dans la boucle (on dit que c'est une variable muette)

Exemple 2#

Le programme suivant affiche les nombres de 0 à 9.

1for i in range(10):
2  print(i)

Exercice 2#

Écrivez un programme qui affiche les nombres entiers de 0 jusqu'à 17 et affiche à la fin "J'ai fini de compter!".

1# Écrivez le programme ici

Exercice 3#

Modifiez le programme ci-dessous pour qu'il affiche les nombres entiers de 1 à 10.

1for i in range(10):
2  print(i)

Exercice 4#

Écrivez un programme qui calcule et affiche la somme des dix premiers nombres entiers plus grands que 0.

1# Écrivez le programme ici

Exercice 5#

Écrivez un programme qui calcule et affiche le produit des cinq premiers nombres entiers plus grands que 0.

1# Écrivez le programme ici

L'instruction range()#

L’instruction for … in permet de parcourir tous les éléments d’une suite d’éléments définie avec la fonction range(). Cette fonction range() peut prendre 1, 2 ou 3 paramètres

  • range(n): parcourt tous les éléments de 0 à n-1

    • Exemple: range(5) parcourra tous les éléments de la liste [0, 1, 2, 3, 4]

  • range(a, n): parcourt tous les éléments de a à n-1

    • Exemple: range(36,40) parcourra tous les éléments de la liste [36, 37, 38, 39]

  • range(a, n ,p) parcourt tous les éléments de a à n-1 avec un pas de p.

    • Exemple: range(10,18,2) parcourra tous les éléments de la liste [10, 12, 14, 16]

    • Exemple: range(10,0,-2) parcourra tous les éléments de la liste [10, 8, 6, 4, 2]

Remarques:

  • a, n et p doivent être des nombres entiers (integer)

  • Si la valeur de début est plus grande que la valeur de fin, alors le pas p doit être positif.

  • Si la valeur de début est plus petite que la valeur de fin, alors le pas p doit être négatif.

Exemple 3#

Modifiez les paramètres a, n et p dans l'exemple ci-dessous afin de voir quelles sont les valeurs qui seront parcourures par la variable i dans la boucle for()

1# Modifiez les paramètres `a`, `n` et `p` ci-dessous
2a = 1	    # valeur de début
3n = 10    # valeur de fin
4p = 2	    # pas
5
6print("range(", a ,",", n ,",", p ,"): ")
7for i in range(a, n ,p):
8  print(i)

Exercice 6#

Cochez la bonne réponse.

  1. Qu'affiche le progamme suivant?

    1for i in range(3):
    2  print("Hello")
    
  2. Qu'affiche le progamme suivant?

    1for i in range(4):
    2  print(i)
    
  3. Qu'affiche le progamme suivant?

    1for i in range(2):
    2  print("i")
    
  4. Qu'affiche le progamme suivant?

    1for i in range(3, 7):
    2  print(i+1)
    
  5. Qu'affiche le progamme suivant?

    1for i in range(5,20,3):
    2  print(i)
    

Exercice 7#

Écrivez un programme qui demande à l'utilisateur un nombre entier positif et affiche les 10 premiers multiples de ce nombre.

1# Écrivez le programme ici

Exercice 8#

Écrivez un programme qui affiche les nombres pairs jusqu'à 20.

1# Écrivez le programme ici

Exercice 9#

Écrivez un programme qui affiche le résultat des calculs suivants sans le noter explicitement:

  1. \(1 + 2 + 3 + 4 + ... + 99 + 100\)

    1# Écrivez le programme ici
    
  2. \(1 + 3 + 5 + 7 + ... + 97 + 99\)

    1# Écrivez le programme ici
    

Exercice 10#

Ecrivez un programme qui permette de dessiner un sapin comme sur le modèle ci-dessous.

Pyramide
  • Pour ceci, le programme doit demander à l'utilisateur la hauteur du sapin (c'est-à-dire le nombre de lignes de 'O'). Le dessin ci-dessus est a une hauteur de 7.

  • Dessinez à la main un petit sapin afin de déterminer le nombre d'espaces et le nombre de 'O' à dessiner pour chacune des lignes

  • créez une boucle qui pour à chaque passage dessinera une ligne du dessin: un certain nombre d'espaces suivi d'un certain nombre de 'O'

  • Pour équilibrer le tout, il faut dessiner un tronc: la hauteur du tronc correspond au tiers de la hauteur du sapin (utiliser pour ceci la division entière)

1# Écrivez le programme ici

Astuce

Par défaut, la fonction print() ajoute automatiquement un retour à la ligne comme dernier caractère. Pour ne pas avoir de retour à la ligne, il est possible de redéfinir (et de le remplacer par un caractère vide) en ajoutant end="" comme dernier argument:

1print("a")
2print("b")
3print("c")
4print("d", end="")
5print("e", end="")
6print("f")