Trois paliers · guidé → semi-guidé → autonome
Un élève a écrit le programme ci-dessous pour connaître la population en 2022 (soit n = 7 ans après 2015). Quelle valeur va-t-il afficher ?
u0 = 15000
r = 200
n = 7
print(u0 + n * r)
16400.On veut afficher la population chaque année de 2015 à 2024 (soit n = 0 à 9). Trois éléments manquent dans le code. Complète-les.
u0 = 15000
r = 200
for n in range(, ) :
pop = u0 + n *
print(pop)
# affiche 15000, 15200, 15400, ..., 16800
range(0, ?) doit produire les valeurs 0, 1, …, 9 — la borne est exclue.Un camarade a écrit un programme pour afficher le capital de Léa chaque année, de l'année 0 à l'année 9. Son code contient deux erreurs — repère-les et corrige-les dans les deux champs.
u0 = 2000
q = 1.03
for n in range(0, 11) : # ← bug 1
capital = u0 * q * n # ← bug 2
print(capital)
Explique chaque bug et donne la correction :
11
*
range(0, 11) génère 0, 1, …, 10 — soit 11 valeurs. On veut n = 0 à 9, donc 10 valeurs.q * n multiplie q par n — ce n'est pas une puissance. La puissance en Python s'écrit **.
On veut maintenant calculer le capital total accumulé par Léa sur 10 ans, c'est-à-dire la somme u₀ + u₁ + … + u₉. Complète le programme ci-dessous. Quatre éléments manquent.
u0 = 2000
q = 1.03
total = # accumulateur
for n in range(0, ) :
capital = u0 * q ** n
total = + capital
print()
# doit afficher environ 22927.76
0 (neutre pour l'addition). À chaque tour on fait total = total + capital. Le print est en dehors de la boucle pour n'afficher qu'une seule fois la somme finale.
Léa veut savoir au bout de combien d'années son capital dépasse 2 500 € pour la première fois. Elle modifie son programme pour chercher cela. Lequel de ces codes répond correctement à sa question ?
1.03 ** n, pas 1.03 * n) et un break pour s'arrêter dès le premier dépassement. Sans break (réponse D), le programme afficherait toutes les années où le capital dépasse 2 500 €, pas seulement la première. La réponse A utilise une multiplication simple au lieu d'une puissance — calcul complètement faux.
Écris un programme qui affiche le temps de Karim semaine par semaine, de la semaine 0 à la semaine 12.
Le temps évolue selon une suite arithmétique : tₙ = 72 − 0,8 × n.
En Python, 0,8 s'écrit 0.8.
t0 = 72
r = -0.8
for n in range(0, 13) :
t_n = t0 + n * r
print(t_n)
range(0, 13) génère 0, 1, …, 12 (13 valeurs). La raison est négative car le temps diminue. En Python, -0.8 est valide tel quel.
Améliore ton programme : au lieu d'afficher tous les temps, fais-le s'arrêter dès que Karim passe sous 65 secondes et affiche le numéro de semaine correspondant.
Tu auras besoin de :
— une condition if t_n < 65 :
— l'instruction break pour sortir de la boucle
— print(n) pour afficher la semaine
t0 = 72
r = -0.8
for n in range(0, 50) :
t_n = t0 + n * r
if t_n < 65 :
print(n)
break
Karim atteint son objectif à la semaine 9 : t₉ = 72 − 0,8 × 9 = 64,8 s. On peut vérifier algébriquement : 72 − 0,8n < 65 ⟺ 0,8n > 7 ⟺ n > 8,75, donc le premier entier est n = 9.