Boucles (instructions while et for)

(source python.lycee.fr)

Tant que (boucle non bornée)

Le principe de la boucle while, c’est d’exécuter un bloc d’instructions tant que (while in english) une condition donnée est vraie. Encore une fois commençons par un exemple :

>>> i = 1
>>> while i <= 5:
...     print(i)
...     i = i + 1
...
1
2
3
4
5

Ici tant que (while) la condition (i\leq5) est vraie, le bloc d’instructions (il y en a deux dans notre cas) est executé.

Regardons ce code pas à pas pour bien comprendre ce qu’il se passe.

1i = 1
2while i <= 5:
3    print(i)
4    i = i + 1
5print('Fini !')
Etape 1 sur 18
ligne qui vient juste d'être exécutée

prochaine ligne à exécuter

Sortie du programme:
Contexte d'évaluation
Objets

Attention

La deuxième instruction i = i + 1 est primordiale car elle assure que l’on va sortir de la boucle. En effet, ce qu’il faut éviter avec les boucles tant_que, c’est de construire une boucle sans fin. C’est ce qui peut se produire si la condition du while n’est jamais vérifiée.

Pour savoir combien de fois la boucle while est executée, il peut être utile d’utiliser une variable qui servira de compteur, c’est-à-dire une variable (qu’il ne faut pas oublier d’initialiser) et incrémentée de 1 dans le bloc d’instructions.

Pour (boucle bornée)

Lorsque l’on souhaite répéter un nombre donné de fois la même instruction ou le même bloc d’instructions, la commande for est la plus appropriée.

Admettons que l’on veuille afficher 5 fois le mot blabla. Voici ce que l’on peut faire.

>>> for i in range(5):  # pour i allant de 0 à 4
...     print("blabla")
...
blabla
blabla
blabla
blabla
blabla

Bon, arrêtons là le blabla et regardons un exemple plus mathématique. Si on veut afficher les carrés des entiers de 1 à 7 :

>>> for i in range(1, 8):   # pour i allant de 1 à 7
...     print(i**2)
...
1
4
9
16
25
36
49

Puis terminons sur un exemple classique qui est le calcul de la somme des premiers entiers. Disons ici que l’on s’arrête à 30. Autrement dit, on veut calculer

1+2+3+\dots+30

que l’on note aussi

\sum_{i=1}^{30}\, i

>>> S = 0
>>> for i in range(1, 31):   # pour i allant de 1 à 30
...     S = S + i
... print(S)
...
465