La boucle 'tant que' en langage Python

Une boucle contenant une alternative

Exposé du problème

Un jeune robot passe un moment à s'amuser sur une fête foraine. On lui a confié une certaine somme d'argent de poche. Il a pour mission de tout dépenser.

Devant chaque attraction, il doit donc vérifier:

  • le prix d'entrée
  • qu'il dispose encore de la somme suffisante
Lorsqu'il a dépensé tout son argent (et pas avant), il revient à la maison.

Algorithme

La résolution pourrait passer par une méthode du type suivant:

tant que < il reste de l'argent>
    demander le prix de l'attraction suivante
    s'il dispose d'assez d'argent,
        dépenser la somme
        sinon refuser l'accès

Exécution

$ python feteForaine.py
Combien d'argent de poche au départ? 30 Un humain indique la somme à dépenser
* Combien coûte l'attraction suivante? 10 Devant chaque attraction, un humain indique le prix à payer
Roulez jeunesse...
il reste 20
Le jeune robot profite de l'attraction
puis fait ses comptes
* Combien coûte l'attraction suivante? 7
Roulez jeunesse
il reste 13
* Combien coûte l'attraction suivante? 8
Roulez jeunesse
il reste 5
Et ainsi de suite
* Combien coûte l'attraction suivante? 7
Désolé, c'est trop cher
Plus assez d'argent pour cette attraction
* Combien coûte l'attraction suivante? 5
Roulez jeunesse
il reste 0
Pour celle-ci, c'est tout juste possible

Mais il n'a plus d'argent
Je rentre à la maison

Le programme

Le programme correspondant en langage Python pourrait s'écrire:


#!/usr/bin/env python
# *-* encoding: ISO-8859-1 -*-

argent = input ("Combien d'argent de poche au départ? ")

while (argent > 0) :
    prixAttraction = input ("Combien coûte l'attraction suivante? ")
    if prixAttraction <= argent :
       print "Roulez jeunesse"
       argent = argent - prixAttraction
       print "il reste ",argent
    else :
        print "Désolé, c'est trop cher"

print "Je rentre à la maison"

  • Enregistre le programme sous le nom feteForaine.py.
  • Vérifie que tu comprends bien la raison des indentations du texte.
  • Que ses passerait-il si le programme était écrit de la manière suivante (remarque la différence d'indentation):

while (argent > 0) :
    prixAttraction = input("Combien coûte l'attraction suivante? ")
if prixAttraction <= argent :
    print "Roulez jeunesse"
   argent = argent - prixAttraction
    print "il reste ",argent
else :
    print "Désolé, c'est trop cher"

  • Quel est le rôle de la ligne

argent = input ("Combien d'argent de poche au départ? ")

Quand le programme fonctionne correctement et que tu comprends bien son fonctionnement, passe à la page suivante. Vers la page suivante Page suivante


Dernière modification 18/08/2016 Test dans /info ...