La boucle while en Python.
L’une des tâches que les machines font le mieux est la répétition sans erreur de tâches identiques. Il existe bien des méthodes pour programmer ces tâches répétitives. Nous allons commencer par l’une des plus fondamentales : la boucle construite à partir de l’instruction while.
Testons ces quelques lignes :
>>> a = 0
>>> while ( a < 5 ) :
a = a + 1
print (a)
L’instruction while utilisée à la seconde ligne indique à Python qu’il lui faut répéter continuellement le bloc d’instructions qui suit, tant que la condition (ici : a<5) est vérifiée.
Comme l’instruction if abordée au chapitre précédent, l’instruction while amorce une instruction composée. Le double point à la fin de la ligne introduit le bloc d’instructions à répéter, lequel doit obligatoirement se trouver en retrait → être indenté.
Lorsque la condition n’est plus vérifiée, alors le bloc indenté qui suit est ignoré et le programme passe à la suite (ou s’arrête, s’il n’y a pas de suite).
Exercice 13 : nombres pairs.
Écrire un programme qui affichera les nombres pairs (2, 4, 6, 8 …) de 2 à 40.
nombre=0 while (nombre<40): nombre=nombre+2 print(nombre)
Exercice 14 : le juste prix.
Écrire un programme qui va :
- choisir un prix au hasard (à valeur entière) entre 0 et 100€.
- demander à l’utilisateur de deviner le prix.
- à chaque réponse incorrecte de l’utilisateur, lui répondre : c’est plus, ou c’est moins.
- une fois la bonne réponse trouvée, lui répondre « gagné ! ».
Indications :
- Choisir un prix au hasard, revient à tirer un nombre aléatoire entier entre 0 et 100. Pour cela :
- commencer par importer la fonction randint du module random à l’aide de l’instruction :
from random import randint
- puis, pour « tirer » un prix au hasard entre 0 et 100 :
prix=randint(0,100)
- commencer par importer la fonction randint du module random à l’aide de l’instruction :
- Pour comparer la valeur proposée par l’utilisateur au prix, nous aurons besoin de l’opérateur différent de : !=
- Comme toujours, attention aux types : les valeurs saisies par l’utilisateur sont des chaînes de caractères; pour les comparer au prix, commencer par les convertir en entier avec int.
from random import randint prix=randint(0,100) nombre=101 while (nombre != prix): nombre=int(input("Votre nombre?")) if nombre == prix: print("Vous avez Gagné") elif nombre > prix: print("le nombre cherché est plus petit") else: print("le nombre cherché est plus grand")
Exercice 15 : propagation d’une rumeur.
On s’intéresse à la vitesse de propagation d’une rumeur au sein d’une communauté donnée.
Il vous est donc commandé un programme informatique avec le cahier des charges suivant :
- Votre programme doit d’abord lire un nombre n correspondant à la population totale de la ville.
- Sachant qu’une personne connaissait la rumeur au jour 1 dans la ville, et que chaque jour 3 personnes supplémentaires connaissent la rumeur, le programme doit calculer à partir de quel jour toute la population de la ville sera au courant de la rumeur.
population = int(input("Quelle est population de la ville? ")) nbPersonnes = 1 nbJours = 0 while (nbPersonnes < population): nbJours = nbJours+1 nbPersonnes = nbPersonnes+3 print("Il faut "+str(nbJours)+" jour(s) pour propager la rumeur.")
Exercice 16 : placement bancaire de son épargne.
La banque PlaceTesSousChezNous propose un nouveau livret jeune pour les moins de 20 ans :
- on dépose l’année 0 une somme inférieure ou égale à 5 000€.
- elle augmente chaque année de 4 %.
On souhaite écrire un programme permettant de savoir au bout de combien d’années la somme présente sur le compte aura dépassé 6 000€.
Indication : ici, il suffit de définir seulement deux variables. On rappelle que pour passer d’une année à l’autre, il suffit de multiplier la somme par le coefficient (100%+4%).
somme = int(input("Quelle est la somme déposé (<5000Euros)? ")) ans=0 while (somme < 6000): ans=ans+1 somme = somme * 1.04 print("Il faut "+str(ans)+" an(s) pour atteindre 6000Euros.") print("Vous aurez alors "+str(round(somme,2))+" Euros sur votre compte")
Ici on utilise la commande round(somme,2)
pour n’afficher que 2 chiffres après la virgule pour ma somme sur mon compte