Boucle while

Les programmes suivants permettent de saisir plusieurs nombres et d'afficher leur somme.

Dans un premier temps supposons qu'il faut additionner exactement 4 nombres, dans ce cas nous pouvons utiliser un boucle for pour réaliser cela :


 

Maintenant imaginons qu'on ne sache pas à l'avance la quantité de nombres à additionner, nous devons alors utiliser une boucle while et décider, par exemple, d'indiquer au programme la fin de la saisie en entrant la valeur 0.


 

Comment cela-fonctionne-t-il ?

L'instruction while contient un test, le bloc d'instructions de la boucle est exécuté tant que le résultat de ce test est true.

Pour bien comprendre le fonctionnement de ce dispositif, déroulez le diaporama :
Les nombres saisis seront 15, 112 et 0.

 1/8 

while(saisie!="0"):

    saisie=raw_input("Entrez votre nombre ou 0 pour terminer")

    somme=somme+float(saisie)

print "la somme vaut ",somme

Variable somme : 0

Variable saisie : chaîne de caractères vide

Au départ, la variable somme reçoit la valeur numérique 0 et la variable saisie reçoit une chaîne de caractères vide.

Lorsque l'instruction while est rencontrée, le test saisie!="0" est fait, comme saisie est une chaîne de caractères vide, le résultat du test est true et le bloc d'instructions de la boucle va être exécuté.

 2/8 

while(saisie!="0"):

    saisie=raw_input("Entrez votre nombre ou 0 pour terminer")

    somme=somme+float(saisie)

print "la somme vaut ",somme

Variable somme : 0

Variable saisie : "15"

La première instruction du bloc provoque l'affichage d'une boite de dialogue pour inviter l'utilisateur à entrer le premier nombre, 15 : la variable saisie reçoit la chaîne de caractères « 15 ».

 3/8 

while(saisie!="0"):

    saisie=raw_input("Entrez votre nombre ou 0 pour terminer")

    somme=somme+float(saisie)

print "la somme vaut ",somme

Variable somme : 15

Variable saisie : "15"

La deuxième instruction ajoute la valeur entrée par l'utilisateur au contenu de la variable somme. Comme la variable somme contenait initialement 0, elle contient maintenant 15.

Remarquez qu'on utilise float pour convertir la chaîne de caractères saisie en nombre.

 4/8 

while(saisie!="0"):

    saisie=raw_input("Entrez votre nombre ou 0 pour terminer")

    somme=somme+float(saisie)

print "la somme vaut ",somme

Variable somme : 15

Variable saisie : "15"

Le test saisie!="0" est fait, comme saisie contient « 15 », le résultat est true et les instructions du bloc vont être exécutées

 5/8 

while(saisie!="0"):

    saisie=raw_input("Entrez votre nombre ou 0 pour terminer")

    somme=somme+float(saisie)

print "la somme vaut ",somme

Variable somme : 127

Variable saisie : "112"

De nouveau l'utilisateur est invité à entrer un nombre soit 112 et la valeur est ajoutée à la somme 127.

 6/8 

while(saisie!="0"):

    saisie=raw_input("Entrez votre nombre ou 0 pour terminer")

    somme=somme+float(saisie)

print "la somme vaut ",somme

Variable somme : 127

Variable saisie : "112"

Le test saisie!="0" est fait, comme saisie contient « 112 », le résultat est true et les instructions du bloc vont être exécutées

 7/8 

while(saisie!="0"):

    saisie=raw_input("Entrez votre nombre ou 0 pour terminer")

    somme=somme+float(saisie)

print "la somme vaut ",somme

Variable somme : 127

Variable saisie : "0"

De nouveau l'utilisateur est invité à entrer un nombre soit 0 et la valeur est ajoutée à la somme 127.

 8/8 

while(saisie!="0"):

    saisie=raw_input("Entrez votre nombre ou 0 pour terminer")

    somme=somme+float(saisie)

print "la somme vaut ",somme

Variable somme : 127

Variable saisie : "0"

Le test saisie!="0" est fait, mais cette fois comme saisie contient la chaîne de caractères « 0 », le résultat est false et la boucle se termine.
Le programme affiche "la somme vaut 127".

Exercice

Ecrire un programme qui donne le reste de la division d'un nombre entier par 7 en procédant par soustractions successives.

A vous de jouer !

Ecrivez les instructions dans le cadre gris, et cliquez sur le bouton « Exécuter » en bas du cadre.

Si rien ne s'affiche, vous avez certainement fait une erreur de syntaxe.


 

Solution

Le code


 

Masquer