La boucle while

34 1 0
                                        

La boucle que je vais présenter se retrouve dans la plupart des autres langages de programmation et porte le même nom. Elle permet de répéter un bloc d'instructions tant qu'une condition est vraie (while signifie « tant que » en anglais). J'espère que le concept de bloc d'instructions est clair pour vous, sinon je vous renvoie au chapitre précédent.

La syntaxe de while est :

while condition:

# instruction 1

# instruction 2

#

# instruction N

Vous devriez reconnaître la forme d'un bloc d'instructions, du moins je l'espère.

Dans votre tête : Quelle condition va-t-on utiliser ?

Eh bien, c'est là le point important. Dans cet exemple, on va créer une variable qui sera incrémentée dans le bloc d'instructions. Tant que cette variable sera inférieure à 10, le bloc s'exécutera pour afficher la table.

Si ce n'est pas clair, regardez ce code, quelques commentaires suffiront pour le comprendre :

nb = 7 # On garde la variable contenant le nombre dont on veut la table de multiplication

i = 0 # C'est notre variable compteur que nous allons incrémenter dans la boucle

while i < 10: # Tant que i est strictement inférieure à 10

print(i + 1, "*", nb, "=", (i + 1) * nb)

i += 1 # On incrémente i de 1 à chaque tour de boucle

Analysons ce code ligne par ligne :

1) On instancie la variable nb qui accueille le nombre sur lequel nous allons travailler (en l'occurrence, le chiffre 7). Vous pouvez bien entendu faire saisir ce nombre par l'utilisateur, vous savez le faire à présent.

2) On instancie la variable i qui sera notre compteur durant la boucle. i est un standard utilisé quand il est question de boucles et de variables s'incrémentant mais il va de soi que vous auriez pu lui donner un autre nom. On l'initialise à 0.

3) Un saut de ligne ne fait jamais de mal !

4) On trouve ici l'instruction while qui se décode, comme je l'ai indiqué en commentaire, en « tant que i est strictement inférieure à 10 ». N'oubliez pas les deux points à la fin de la ligne.

5) La ligne du print, vous devez la reconnaître. Maintenant, la plus grande partie de la ligne affichée est constituée de variables, à part les signes mathématiques. Vous remarquez qu'à chaque fois qu'on utilise i dans cette ligne, pour l'affichage ou le calcul, on lui ajoute 1 : cela est dû au fait qu'en programmation, on a l'habitude (habitude que vous devrez prendre) de commencer à compter à partir de 0. Seulement ce n'est pas le cas de la table de multiplication, qui va de 1 à 10 et non de 0 à 9, comme c'est le cas pour les valeurs de i. Certes, j'aurais pu changer la condition et la valeur initiale de i, ou même placer l'incrémentation de i avant l'affichage, mais j'ai voulu prendre le cas le plus courant, le format de boucle que vous retrouverez le plus souvent. Rien ne vous empêche de faire les tests et je vous y encourage même.

6) Ici, on incrémente la variable i de 1. Si on est dans le premier tour de boucle, i passe donc de 0 à 1. Et alors, puisqu'il s'agit de la fin du bloc d'instructions, on revient à l'instruction while. while vérifie que la valeur de i est toujours inférieure à 10. Si c'est le cas (et ça l'est pour l'instant), on exécute à nouveau le bloc d'instructions. En tout, on exécute ce bloc 10 fois, jusqu'à ce que i passe de 9 à 10. Alors, l'instruction while vérifie la condition, se rend compte qu'elle est à présent fausse (la valeur de i n'est pas inférieure à 10 puisqu'elle est maintenant égale à 10) et s'arrête. S'il y avait du code après le bloc, il serait à présent exécuté.

Remarque : N'oubliez pas d'incrémenter i ! Sinon, vous créez ce qu'on appelle une boucle infinie, puisque la valeur de i n'est jamais supérieure à 10 et la condition du while, par conséquent, toujours vraie La boucle s'exécute donc à l'infini, du moins en théorie. Si votre ordinateur se lance dans une boucle infinie à cause de votre programme, pour interrompre la boucle, vous devrez taper CTRL + C dans la fenêtre de l'interpréteur (sous Windows ou Linux). Python ne le fera pas tout seul car, pour lui, il se passe bel et bien quelque chose. De toute façon, il est incapable de différencier une boucle infinie d'une boucle finie : c'est au programmeur de le faire.

Programmer en PythonWhere stories live. Discover now