Une boucle permet d'exécuter une portion de code plusieurs fois de suite.
L'instruction while
Syntaxe
while expression: # ne pas oublier le signe de ponctuation ':' bloc d'instructions # attention à l'indentation# suite du programmeSi l'expression est vraie (True) le bloc d'instructions est exécuté, puis l'expression est à nouveau évaluée.
Le cycle continue jusqu'à ce que l'expression soit fausse (False) : on passe alors à la suite du programme.
Exemple : un script qui compte de 1 à 4
# script Boucle1.py# initialisation de la variable de comptagecompteur = 1while compteur < 5: # ce bloc est exécuté tant que la condition (compteur < 5) est vraie print(compteur, compteur < 5) compteur += 1 # incrémentation du compteur, compteur = compteur + 1print(compteur < 5)print("Fin de la boucle")>>> 1 True2 True3 True4 TrueFalseFin de la boucleTable de multiplication par 8
# script Boucle2.pycompteur = 1 # initialisation de la variable de comptagewhile compteur <= 10: # ce bloc est exécuté tant que la condition (compteur <= 10) est vraie print(compteur, '* 8 =', compteur*8) compteur += 1 # incrémentation du compteur, compteur = compteur + 1print("Et voilà !")>>> 1 * 8 = 82 * 8 = 163 * 8 = 244 * 8 = 325 * 8 = 406 * 8 = 487 * 8 = 568 * 8 = 649 * 8 = 7210 * 8 = 80Et voilà !Affichage de l'heure courante
# script Boucle3.pyimport time # importation du module timequitter = 'n' # initialisationwhile quitter != 'o': # ce bloc est exécuté tant que la condition est vraie # strftime() est une fonction du module time print('Heure courante ', time.strftime('%H:%M:%S')) quitter = input("Voulez-vous quitter le programme (o/n) ? ")print("A bientôt")>>> Heure courante 09:48:54Voulez-vous quitter le programme (o/n) ? nHeure courante 09:48:58Voulez-vous quitter le programme (o/n) ? oA bientôtL'instruction for
Syntaxe
for élément in séquence : bloc d'instructions# suite du programmeLes éléments de la séquence sont issus d'une chaîne de caractères ou bien d'une liste.
Exemple avec une séquence de caractères
# script Boucle4.pychaine = 'Bonsoir'for lettre in chaine: # lettre est la variable d'itération print(lettre)print("Fin de la boucle")La variable lettre est initialisée avec le premier élément de la séquence ('B').
Le bloc d'instructions est alors exécuté.
Puis la variable lettre est mise à jour avec le second élément de la séquence ('o') et le bloc d'instructions à nouveau exécuté...
Le bloc d'instructions est exécuté une dernière fois lorsqu'on arrive au dernier élément de la séquence ('r') :
>>> BonsoirFin de la boucleExemple avec les éléments d'une liste
# script Boucle5.pymaliste = ['Pierre', 67.5, 18]for element in maliste: print(element)print("Fin de la boucle")Là, on affiche dans l'ordre les éléments de la liste :>>> Pierre67.518Fin de la boucleFonction range()
L'association avec la fonction range() est très utile pour créer des séquences automatiques de nombres entiers :
# script Boucle6.pyprint(list(range(1,5))) for i in range(1,5): print(i)print("Fin de la boucle")>>> [1, 2, 3, 4]1234Fin de la boucleTable de multiplication
La création d'une table de multiplication paraît plus simple avec une boucle for qu'avec une boucle while :
# script Boucle7.pyfor compteur in range(1,11): print(compteur, '* 9 =', compteur*9)print("Et voilà !")>>> 1 * 9 = 92 * 9 = 183 * 9 = 274 * 9 = 365 * 9 = 456 * 9 = 547 * 9 = 638 * 9 = 729 * 9 = 8110 * 9 = 90Et voilà !L'instruction break
L'instruction break provoque une sortie immédiate d'une boucle while ou d'une boucle for.
Dans l'exemple suivant, l'expression True est toujours ... vraie : on a une boucle sans fin.
L'instruction break est donc le seul moyen de sortir de la boucle.
Affichage de l'heure courante
# script Boucle8.pyimport time # importation du module timewhile True: # strftime() est une fonction du module time print('Heure courante ', time.strftime('%H:%M:%S')) quitter = input('Voulez-vous quitter le programme (o/n) ? ') if quitter == 'o': breakprint("A bientôt")>>> Heure courante 14:25:12Voulez-vous quitter le programme (o/n) ? nHeure courante 14:25:20Voulez-vous quitter le programme (o/n) ? oA bientôtAstuce
Si vous connaissez le nombre de boucles à effectuer, utiliser une boucle for.
Autrement, utiliser une boucle while (notamment pour faire des boucles sans fin).