Chapitre 4 : Les boucles

Bonjour à tous,

Dans un programme, il est parfois nécessaire de répéter une instruction un certain nombre de fois. Pour cela, on utilise des boucles.

La boucle while

Prenons un exemple concret : une punition qu’un écolier doit recopier deux cents fois. Il y a quarante ans, le pauvre cancre pris par la patrouille devait patiemment recopier la phrase qui lui permettait d’expier sa faute : « Je ne collerai plus mon vieux chewing-gum sous mon pupitre ».

Aujourd’hui, ce genre de punition est une formalité pour celui qui maîtrise les boucles et en Python, pour en créer une, on utilise le mot-clé while. Cela signifie Tant que… C’est à dire Tant que la condition est vraie, exécute cette instruction.

#!/usr/bin/python3
# -*- coding: utf8 -*-

# Phrase à recopier:
chaine = "Je ne copierai plus sur mon voisin.\n"

# Variables d'incrémentation.
# À chaque tour de boucle, sa valeur augmente de 1
i = 1

# BOUCLE:
while i <= 10: #Tant que i est inférieur ou égal à 10:
    print (i, chaine) # Imprimer i et chaine
    i += 1 # Incrémentation de la variable (i = i + 1)

# Lorsque i vaut 10, la boucle s'interrompt.

Je l’exécute dans un terminal interactif IDLE-3 :

1 Je ne copierai plus sur mon voisin

2 Je ne copierai plus sur mon voisin

3 Je ne copierai plus sur mon voisin

4 Je ne copierai plus sur mon voisin

5 Je ne copierai plus sur mon voisin

6 Je ne copierai plus sur mon voisin

7 Je ne copierai plus sur mon voisin

8 Je ne copierai plus sur mon voisin

9 Je ne copierai plus sur mon voisin

10 Je ne copierai plus sur mon voisin

Il faut prévoir un moyen d’interrompre la boucle après un nombre défini d’itérations sous peine de créer une boucle infinie qui finirait par épuiser les ressources mémoire de votre ordinateur. Pour cela, on déclare une variable souvent nommée i (par convention) que l’on incrémente à chaque tour de boucle, c’est-à dire à laquelle on ajoute la valeur 1 à chaque tour de boucle (i += 1) . Quand la valeur contenue dans la variable i est égale à la condition définie en début de boucle (dans notre exemple, c’est la ligne 9 : tant que i est inférieur ou égal à 10), alors la boucle s’interrompt.

Voici un exemple de boucle infinie. La condition est toujours vraie, la boucle ne s’interrompt jamais. Le seul moyen de l’interrompre avant qu’elle ne dévore toute la mémoire de votre ordinateur, tel un trou noir digital, est de presser les touches ctrl + C.

#!/usr/bin/python3
# -*- coding: utf8 -*-

line_number = 0
# Tant que 3 est inférieur à 4 (C'est toujours vrai!)
while 3 < 4 :
    line_number += 1
    print(line_number, "Je viens de créer une boucle infinie.\n")

# Rien n'est prévu pour sortir de la boucle.

J’interromps la boucle après 1038 itérations :

boucle_4

La boucle for

Il existe une autre manière de créer une boucle, en utilisant les mots-clés for… in range. Comme je l’écris en commentaire, il est inutile d’incrémenter la variable i, la boucle for s’en charge.

#!/usr/bin/python3
# -*- coding: utf8 -*-

for i in range(1, 51):
    print(i, "Je dois recopier 50 fois cette phrase.")

# Il est inutile d'incrémenter la variable i.
# La boucle for s'en charge.

Parcourir une liste

Avec for, il est possible de parcourir une liste pour, par exemple, en extraire les élements.

Avec for… in :

#!/usr/bin/python3
# -*- coding: utf8 -*-

liste_fruits = ["pommes", "poires", "oranges"]

for fruit in liste_fruits:
    print(fruit)

pommes

poires

oranges

Avec for… in enumerate

#!/usr/bin/python3
# -*- coding: utf8 -*-

liste_fruits = ["pommes", "poires", "oranges"]

for i, fruit in enumerate(liste_fruits):
    print(i + 1, fruit)

1 pommes

2 poires

3 oranges