Contenu principal
Chapitre 5 · La boucle while › Leçon 4 sur 5

Nouveau gratte ciel

Audouin est architecte de gratte-ciels. Le coût dépend de la hauteur de la tour et son entreprise facture 1000€ le premier mètre, 1800 le deuxième mètre, 2600 le troisième mètre et ainsi de suite : chaque mètre additionnel est facturé 800€ supplémentaires.

Un client discret mais fortuné souhaite savoir quelle hauteur maximale son budget lui permet d'atteindre.

  1. 1

    Quel est le prix d'une construction de 3 mètres de haut ? Donne ta réponse dans la variable prix_3

    Solution

    Le premier mètre est facturé 1000€, le second 1800€ et le troisième 2600€ puisque chaque mètre supplémentaire coûte 800€ de plus que le précédent.

    Au total, la facture pour 3m s'élève à la somme 1000+1800+26001000 + 1800 + 2600 soit 5400€

    prix_3 = 5400
  2. 2

    Le client dispose d'un budget de 10 millions d'euros. Peut-il construire une tour de 150m ? Pour répondre tu vas créer dans les prochaines questions une boucle while basée sur la logique suivante : tant que le prix total du projet est inférieur au budget on peut augmenter la tour de 1m de haut.

    Défini pour commencer une variable budget qui correspond au budget du client, un compteur h qui va augmenter avec la hauteur de la tour en mètres, et une variable prix_total qui correspond au prix du projet pour h mètres de haut.

    Solution

    Pour le moment il s'agit d'initialiser les variables nécessaires à la boucle while.

    Il nous faut le budget du client, qui est initialement de 10 000 000€, un compteur h pour la hauteur de la tour, qui est initialement nul (on démarre de 0) et une variable prix_total qui va stocker l'évolution de la facture lorsque la hauteur augmente. Le prix total est initialement nul.

    budget = 10000000
    h = 0
    prix_total = 0
  3. 3

    Il ne reste plus qu'à écrire la boucle while. N'oublie pas de vérifier la condition d'arrêt pour éviter d'avoir une boucle infinie et pense à réassigner correctement les variables à chaque itération.

    Solution

    Tant que le prix total est inférieur au budget, on peut construire un mètre supplémentaire. Donc la condition d'arrêt est prix_total < budget. Dès que le budget est atteint ou dépassé on arrête la construction.

    Dans le corps de la boucle while il faut ensuite incrémenter le compteur h qui mesure la hauteur de la tour donc h = h + 1

    Il faut également modifier la variable prix_total. Le premier étage coûte 1000+0×8001000 + 0\times 800, le deuxième étage coûte 1000+1×8001000 + 1\times 800, le troisième étage coûte 1000+2×8001000 + 2\times 800 etc.

    Donc en général, l'étage h coûte 1000+(h1)×8001000 + (h-1)\times 800 et c'est le montant duquel il faut incrémenter la variable prix_total. Donc prix_total = prix_total + 1000 + (h-1) * 800.

    Réfléchissons à la première itération du code pour vérifier que tout est correct. Lors de la première boucle, prix_total est initialement nul, donc la condition d'arrêt est prix_total < budget est vérifiée et le code indenté dans la boucle while est exécuté. Pour l'instant h vaut 0 donc l'incrémentation h = h + 1 fait passer sa valeur à 1. Cette nouvelle valeur de h est utilisée dans la ligne suivante pour incrémenter la variable prix_total de 1000 + (h-1) * 800 donc de 1000 + (1-1) * 800 = 1000. Donc prix_total augmente de 1000 ce qui correspond bien au prix du premier étage.

    budget = 10000000
    h = 0
    prix_total = 0
    
    while prix_total < budget:
        h = h + 1
        prix_total = prix_total + 1000 + 800 * h
    
    print(h)

Chargement...

Collecte des fichiers...

>>>