Très souvent, on a besoin de répéter plusieurs fois les mêmes séquences d'instructions
D'où l'existence de structures de boucles qui font partie, comme l'instruction if
, des structures de contrôle de flux.
En Python, deux structures de boucle existent :
for
( boucle inconditionnelle )La boucle for ... in ...
permet d'excuter une série d'instruction un nombre de fois prévu.
for variable_compteur in range( 'intervalle de variation du compteur' ) :
Instruction(s) à éxécuter dans la boucle
..............
..............
La variable compteur permet de compter le nombre de "tours" de la boucle; elle est automatiquement incrémentée ( ou décrémentée ! ) d'une certaine valeur ( = le pas de la boucle ) à la fin de chaque "tour"; la boucle "tournera" alors tant que la valeur du compteur se trouve dans l'intervalle de variation indiqué.
for i in range( 4 ) :
⇨ le compteur i prendra les valeurs : 0, 1, 2, 3 soit 4 "tours" de boucle.
for i in range( 3 , 10 ) :
⇨ le compteur i prendra les valeurs : 3, 4, 5, 6, 7, 8, 9 soit 7 "tours" de boucle.
for i in range( 10 , 2 , -2 ) :
⇨ le compteur i prendra les valeurs : 10, 8, 6, 4 ( le pas est de -2 ) soit 4 "tours" de boucle.
Vous remarquez que les instructions à exécuter dans la boucle appartiennent donc au même bloc logique, elles sont donc indentées
de la même façon par rapport au mot clé for
.
while
( boucle conditionnelle )
while ( condition ) :
Instruction(s)
.......
Cette boucle « tourne » tant que ( = while ) la condition évaluée est vraie, autrement dit jusqu'à ce qu'elle devienne fausse...
Bien remarquer que cette condition est évaluée au début de chaque "tour".
Dès que la condition devient fausse, le programme "sort" donc de la boucle et passe aux instructions suivantes...
La condition est une expression, plus ou moins complexe, à évaluer à l'aide d'opérateurs de comparaison.
Ce sont les mêmes que ceux rencontrées au chapitre précédent :
Opérateur | Signification | Commentaire |
---|---|---|
== |
égal à | Bien noter qu'il s'agit là-aussi d'un DOUBLE SIGNE ÉGAL... |
!= |
différent de | |
> |
supérieur à | |
< |
inférieur à | |
>= |
supérieur ou égal à | |
<= |
inférieur ou égal à |
La (ou les) instruction(s) constituent le bloc qui sera exécuté à chaque "tour" de boucle ; elles sont donc indentées d'un même retrait par rapport à l'instruction "parente" ( ici, l'instruction while
) pour indiquer à Python qu'il s'agit du même bloc logique.
i = 0
valeur = 2
while ( i < 10 ) :
print( valeur )
valeur = valeur + 2
i +=1
Ce mode de fonctionnement sous-entend que quelque chose doit, dans le bloc d'instructions, agir sur la variable testée dans la condition évaluée, sinon la condition ne deviendra jamais fausse, et la boucle peut alors ne jamais s'arrêter de "tourner" !!!
ATTENTION donc au risque de boucle infinie !!
Que s'affiche-t-il à la fin de l'exécution de chacun des scripts suivants ?
Écrire une boucle qui affiche 20 fois le mot "Echo".
Écrire une boucle qui affiche un compte à rebours de 20 à 0 INCLUS
20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0