Python 5.8 : Limiter le nombre de vies : boucle for
Cette leçon prolonge la précédente en refaisant le même exercice de jeu, mais cette fois avec une boucle for au lieu de while. Cela permet de comparer les deux approches et de découvrir les limites de la boucle for, notamment le fait qu'elle exécute un nombre fixé d'itérations.
Sortir d'une boucle for avec break
Avec for, on peut décider d'avance le nombre maximum d'essais : par exemple, 5 tentatives pour trouver le nombre magique. Le problème est que la boucle continuera à s'exécuter même après que l'utilisateur ait gagné, sauf si on utilise l'instruction break pour sortir immédiatement, ou un drapeau gagne pour conditionner le message final :
nombre_de_vies = 5
gagne = False
for i in range(nombre_de_vies):
nombre = demander_nombre(1, 10)
if nombre == nombre_magique:
print("Bravo, vous avez gagné")
gagne = True
break
elif nombre > nombre_magique:
print("Le nombre magique est plus petit")
else:
print("Le nombre magique est plus grand")
if not gagne:
print(f"Vous avez perdu, le nombre magique était {nombre_magique}")
Le break permet de sortir immédiatement de la boucle dès que l'utilisateur trouve. Le drapeau gagne permet ensuite de différencier le cas victoire du cas où l'utilisateur a épuisé ses 5 essais. Sans ces deux mécanismes, le programme afficherait à tort un message d'échec même quand l'utilisateur a gagné dès le premier essai.
Les patterns clés à retenir :
- for ... in range(n) pour un nombre fixe d'itérations
- break pour sortir immédiatement de la boucle
- continue pour passer à l'itération suivante
- Drapeau booléen pour suivre un état (gagne, trouve...)
- Le for est adapté quand on connaît le nombre d'essais à l'avance
Nous avons maintenant deux versions du jeu : une avec while pour des essais illimités, et une avec for pour un nombre limité de tentatives. Les deux approches sont valides selon le besoin métier. À très bientôt pour une nouvelle section concernant les jeux mathématiques.