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
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 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 variablebudget
qui correspond au budget du client, un compteurh
qui va augmenter avec la hauteur de la tour en mètres, et une variableprix_total
qui correspond au prix du projet pourh
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 variableprix_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
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 donch = h + 1
Il 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
h
coû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_total
est initialement nul, donc la condition d'arrêt estprix_total < budget
est vérifiée et le code indenté dans la boucle while est exécuté. Pour l'instanth
vaut 0 donc l'incrémentationh = h + 1
fait passer sa valeur à 1. Cette nouvelle valeur deh
est utilisée dans la ligne suivante pour incrémenter la variableprix_total
de1000 + (h-1) * 800
donc de1000 + (1-1) * 800 = 1000
. Doncprix_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)