Comment utiliser les boucles for et while. Jeu de devinette

Les boucles de répétitions

Les boucles sont très utiles dans la programmation. Elles évitent aux programmeurs de répéter un bloc d’instructions, inutilement, un certain nombre de fois. 

Supposons que nous avons une liste de noms et on souhaite tout simplement afficher les éléments de cette liste.

On crée la variable liste avec les éléments à afficher :

liste = ["Téléviseur", "Téléphone", "Tablette", "Ordinateur", "Switch", "PS5"]

Pour afficher la liste on utilise la fonction 

print(liste)

Mais cette fonction affichera tous les éléments de la liste en une seule fois. Et si on veut afficher les éléments un après l’autre il faudra plutôt utiliser la fonction de la manière suivante :

print(liste[0])
print(liste[1])

Pour afficher l’ensemble des éléments de la liste, il faudra répéter l’instruction d’affichage autant de fois qu’il y a des éléments dans la liste.

Quand on a des instructions qui se répètent à l’intérieur d’un code, on doit utiliser des boucles de répétition. On utilise principalement deux boucles : la boucle for et la boucle while.

La boucle while

Le principe d’utilisation de cette boucle est le suivant : tant qu’une condition est vraie, on répète une instruction, ou un bloc d’instructions.

Voici un programme qui permet d’afficher les éléments d’une liste en utilisant la boucle while :

liste = ["Téléviseur", "Téléphone", "Tablette", "Ordinateur", "Switch", "PS5"]
ind = 0
while ind < len(liste):
    print(liste[ind])
    print(" est dans la liste")
    ind = ind+1
print("fin de la liste")

Juste après la création de la variable liste, on crée une nouvelle variable (ind) qui sera utilisée comme indice de l’élément à afficher. Cette sera incrémentée par 1 à chaque passage dans la boucle. Et quand l’indice (ind) atteindra le dernier élément de la liste la boucle s’arrête. Voici le résultat affiché par ce programme :

Il faut absolument penser à, au moins une façon, pour arrêter la boucle while, ici on a utilisé la condition tant que l’indice est inférieur à la longueur de la liste. Et pour cela qu’on a incrémenté l’indice de 1 à chaque passage dans la boucle. Si par erreur on oublie d’incrémenter cet indice, la condition sera toujours vraie, et la boucle tournera à l’infinie, il faudra relancer la console d’exécution.

La boucle for

A l’inverse de la boucle while, avec la boucle for, on sait au préalable le nombre de fois que qu’elle doit tourner. Au fait, elle parcourt les éléments d’une liste l’un après l’autre jusqu’au dernier élément de la liste. Voici la solution de l’exercice précédent réalisé avec la boucle for :

for l in liste:
    print(l)
    print(" est dans la liste")
print("fin de la liste")

on écrit for suivi d’une variable l qui prendra à tour de rôle les éléments de la liste, suivi de in suivi du nom de la liste et suivi de deux point. On pourrait traduire cette ligne de commande par : pour tout l dans la liste faire.

Les lignes qui seront répétées dans le bloc de for sont toutes indentées (espacées par rapport au début de ligne) :

  • Ainsi la première ligne du bloc for est : afficher l (un élément de la liste).
  • Puis la deuxième ligne est l’affichage de la phrase : « est dans la liste »

La dernière ligne, qui correspond à l’affichage de la phrase : « fin de la liste » n’est pas dans le bloc de la boucle car elle n’est pas indentée, elle sera donc affichée qu’une seule fois. Le résultat de ce programme est le même que celui effectué avec la boucle while.

L’instruction break

Que ce soit pour la boucle for ou la boucle while, il est possible de les arrêter avant qu’elles arrivent au bout du dernier incrément. Ceci est possible avec l’instruction break qui permet d’arrêter subitement la boucle.

Exercice :

On reprend l’exercice de jeu devinette de nombre et on l’adapte de manière à ce que le joueur puisse faire 5 essais pour trouver le nombre mystère. Pour ce faire on retire la partie qui consiste à aider le joueur en lui donnant une indication sur le nombre mystère. Cette fois ci on lui dira seulement que le nombre qu’il a choisi est trop grand ou trop petit.

Voici un programme qui résou le problème avec la boucle for :

from random import randint

nbrMax = 20
nMyst = randint(1,nbrMax)
nbrEssai = 5

print("J'ai choisi un nombre mystère entre 1 et ",nbrMax, " à toi de le deviner")

nUtil = int(input("Propose un nombre : "))

for nbr in range(nbrEssai):
    if nUtil < nMyst:
        print("Le nombre est trop petit")
        nUtil = int(input("Propose un autre nombre : "))
    elif nUtil > nMyst:
        print("Le nombre est trop grand")
        nUtil = int(input("Propose un autre nombre : "))
    else:
        print("Félicitations ! Tu as trouvé ",nMyst," mon nombre mystère en ",nbr+1, "essai(s).")
        break
if nUtil != nMyst and nbr >= nbrEssai :
    print("Dommage! tu n'as pas trouvé.")
    print("Mon nombre mystère est : ",nMyst,".")

Il est possible de résoudre cet exercice en utilisant la boucle while. Je vous demande d’essayer de le faire et de partager vos résultats dans les commentaires

Si vous avez aimé l'article vous êtes libre de le partager :)

2 commentaire

  1. C’est quand même complexe, l’informatique ! Mais heureusement qu’il y a des sites comme celui-ci pour y voir un peu plus clair 🙂 Merci pour cet article très intéressant !

Laisser un commentaire