Programmer en Python en 2nde

Boucle conditionnelle : while

Crédits

Toute la structure html/css/js et une partie du contenu ont été réalisés par Nicolas Buyle-Bodin professeur au lycée Lacassagne, avec l'aide de Jean-Manuel Mény, professeur au lycée de la plaine de l'Ain. Ils ont travaillé pendant plusieurs centaines d'heures pour créer un site de formation à destination des enseignants du secondaire de l'académie de Lyon d'une grande qualité visible sur le portail Mathématiques du site académique. Ils ont eu la gentillesse de placer leur code source sous licence Creative Commons BY-NC-SA Respect de la Paternité - Pas d'utilisation commerciale - Partage des conditions initiales à l'identique..

Nous les en remercions chaleureusement.

Tant Que...

Généralement, on souhaite répéter un bloc d'instructions tant qu'une condition est réalisée mais on ne sait pas à l'avance combien de répétitions seront nécéssaires.

La situation la plus courante est :

Tant Que Condition répéter
    Bloc d'instructions
Fin Tant Que

Elle se traduit en Python par :


# flux parent
while condition:
    # bloc d'instructions indenté
# retour au flux parent    
algorigramme while

Par exemple, pour demander la saisie d'un login jusqu'à une saisie correcte, on peut écrire :


login = 'moi'
saisie = input('Login ?')     # initialisation de la condition d'entrée de boucle
while saisie != login:        # test d'entrée de boucle
    saisie = input('Login ?') # mise à jour de la condition de boucle
print('Bienvenue ', login)    # sortie de boucle

Évidemment, on peut aboutir à une boucle infinie si la condition d'entrée de boucle n'est jamais vérifiée.

On peut prévoir des conditions plus complexes avec des opérateurs booleens. Par exemple si on veut limiter à 10 demandes de login, on peut écrire :


login = 'moi'
compteur = 1
saisie = input('Login ?')     # intialisation de la condition d'entrée de boucle
while compteur <  10 and saisie != login:        # test d'entrée de boucle
    saisie = input('Login ?') # mise à jour de la condition de boucle
    compteur = compteur + 1   # mise à jour du compteur
if compteur == 10 and saisie != login:
    print('10 tentatives de login échouées')
else:
    print('Bienvenue ', login)    # sortie de boucle

Enfin remarquons que toute boucle for peut s'écrire avec une boucle while :


somme = 0
for k in range(100, 201):
    somme = somme + k
print("La somme est ", somme)

peut ainsi s'écrire :


somme = 0
k = 100
while k < 201:
    somme = somme + k
    k = k + 1
print("La somme est ", somme)