Deux principaux types de boucles en Python
Une boucle permet de répéter un ensemble d'instructions un certain nombre de fois. Quelle que soit la boucle utilisée, c'est l'indentation des lignes de commandes qui les place ou non à l'intérieur de la boucle.
Définition : Boucle for
Elle est utilisée quand on connaît à l'avance le nombre d'itérations.
Ci-dessous les instructions sont exécutées n fois, i variant entre 0 et n-1.
for i in range(n):
Instruction dans la boucle
Instruction dans la boucle
Instruction hors de la boucle
On peut spécifier des critères plus précis dans l'instruction range()
sous la forme :
range(début, fin, pas)
Définition : Boucle while
Elle est utilisée pour effectuer des instructions tant que la condition placée à la suite du while
est vraie. Si qu'elle cesse de l'être, on sort de la boucle.
while (condition):
Instruction dans la boucle
Instruction dans la boucle
Instruction hors de la boucle
Exemple : Allumage progressif de toutes les DEL du panneau à l'aide de boucles for
Le court programme suivant exploite deux boucles for imbriquées pour gérer les DEL de l'afficheur une à une afin de les allumer progressivement, puis de les éteindre.
from microbit import *
display.clear() # On éteint les DEL
while True: # Les instructions de la boucle sont répétées indéfiniment
for ligne in range(5): # ligne varie entre 0 et 4
for colonne in range(5): # colonne varie entre 0 et 4
display.set_pixel(colonne,ligne,9) # On allume la DEL de coordonnées (colonne,ligne)
sleep(50) # on attend 50 ms avant la prochaine itération
for ligne in range(5):
for colonne in range(5):
display.set_pixel(colonne,ligne,0) # On éteint la DEL de coordonnées (colonne,ligne)
sleep(50)
Exemple : Une boucle while : allumer le panneau de DEL tant que le bouton A est pressé
Le programme ci-dessous illustre l'utilisation simple d'une boucle while pour allumer le panneau de DEL tant qu'on appuie sur un bouton.
from microbit import *
while True:
while button_a.is_pressed(): # Tant qu'on appuie sur le bouton A
for i in range(5):
for j in range(5):
display.set_pixel(i ,j , 9) # On allume tous les pixels
display.clear() # On efface l'écran dès que le bouton A n'est plus pressé