Nouveau gratte ciel
Rébecca 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
Quel est le prix d'une construction de 3 mètres de haut ? Donne ta réponse dans la variable
prix_3Solution
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 soit 5400€
prix_3 = 5400 - 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
budgetqui correspond au budget du client, un compteurhqui va augmenter avec la hauteur de la tour en mètres, et une variableprix_totalqui correspond au prix du projet pourhmè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
hpour la hauteur de la tour, qui est initialement nul (on démarre de 0) et une variableprix_totalqui 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
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
hqui mesure la hauteur de la tour donch = h + 1Il faut également modifier la variable
prix_total. Le premier étage coûte , le deuxième étage coûte , le troisième étage coûte etc.Donc en général, l'étage
hcoûte et c'est le montant duquel il faut incrémenter la variableprix_total. Doncprix_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_totalest initialement nul, donc la condition d'arrêt estprix_total < budgetest vérifiée et le code indenté dans la boucle while est exécuté. Pour l'instanthvaut 0 donc l'incrémentationh = h + 1fait passer sa valeur à 1. Cette nouvelle valeur dehest utilisée dans la ligne suivante pour incrémenter la variableprix_totalde1000 + (h-1) * 800donc de1000 + (1-1) * 800 = 1000. Doncprix_totalaugmente 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-1) print(h)