Trois paliers · guidé → semi-guidé → autonome
En Python, x² s'écrit x**2. Le coefficient −1 devant x² doit être écrit explicitement : -1 * x**2 ou plus simplement -x**2 n'est pas valide — il faut écrire -1 * x**2 + 6*x.
Voici un programme qui calcule la hauteur du ballon pour différentes valeurs de x. Parmi les quatre sorties proposées, laquelle est correcte ?
for x in range(0, 7) :
hauteur = -1 * x**2 + 6 * x
print(hauteur)
range(0, 7) génère x = 0, 1, 2, 3, 4, 5, 6 — soit 7 valeurs. Pour chacune : f(0)=0, f(1)=5, f(2)=8, f(3)=9, f(4)=8, f(5)=5, f(6)=0. La réponse C est presque correcte mais n'a que 6 valeurs (oubli de x=0 ou x=6). La réponse A correspond à 6x sans le terme −x² (oubli de la puissance). La réponse D résulte d'une erreur de signe.
On veut trouver la hauteur maximale atteinte par le ballon. L'idée : on parcourt toutes les valeurs de x, et à chaque fois qu'on trouve une hauteur plus grande que la meilleure connue, on la retient.
On utilise une variable h_max pour mémoriser le plus grand h rencontré jusqu'ici. Au départ elle vaut 0 (le ballon est au sol). À chaque tour :
h à l'instant x.h est plus grande que h_max, alors c'est un nouveau record : on met h_max à jour avec cette nouvelle valeur, et on note l'instant x dans x_max.h_max reste inchangé.À la fin de la boucle, h_max contient la hauteur maximale et x_max l'instant auquel elle est atteinte.
Complète les trois trous du programme :
h_max = 0 # on commence avec le record à 0 (ballon au sol)
x_max = 0 # instant du record
for x in range(0, 7) :
h = -1 * x**2 + 6 * x # hauteur à l'instant x
if h > h_max : # nouveau record ?
h_max = # ① on retient la nouvelle hauteur maximale
x_max = # ② on retient l'instant correspondant
print("Hauteur max :", h_max, "m à t =", , "s")
# doit afficher : Hauteur max : 9 m à t = 3 s
h est plus grande que l'ancien record — c'est elle le nouveau maximum. Quelle variable contient cette hauteur ?Un élève veut afficher le bénéfice de l'entreprise pour chaque x où il est positif, puis afficher le bénéfice maximal à la fin. Son code contient deux erreurs signalées par des soulignements rouges. Repère-les et corrige-les.
g_max = 0
for x in range(0, 11) :
g = -2 * x**2 + 20 * x - 32
if g > 0 :
print(x) # ← bug 1
if g > g_max :
g_max = g
print("Maximum :", x) # ← bug 2
Pour chaque bug, indique ce qu'il faut écrire à la place :
x est le nombre de produits et g est le bénéfice. On veut afficher le bénéfice.x vaut 10 (la dernière valeur du range) — ce n'est pas le maximum. La variable qui mémorise le bénéfice le plus élevé s'appelle g_max.
On sait que g(x) = −2(x − 2)(x − 8) — les racines sont donc x = 2 et x = 8. L'axe de symétrie de la parabole passe par le milieu de ces deux racines.
Complète le programme qui calcule cet axe de symétrie et la valeur du sommet, sans boucle.
x1 = 2 # première racine
x2 = 8 # deuxième racine
axe = ( + ) / 2
# calcul du sommet : on évalue g en x = axe
sommet = -2 * axe**2 + 20 * axe - 32
print("Axe de symétrie : x =", )
print("Sommet : g =", )
# doit afficher : Axe de symétrie : x = 5.0
# Sommet : g = 18.0
(x1 + x2) / 2. Ensuite, le sommet est l'image de ce point par g — on évalue la formule en remplaçant x par axe.
Un élève exécute le programme suivant pour savoir quand l'entreprise est bénéficiaire (g(x) > 0). Que va-t-il afficher ?
for x in range(0, 11) :
g = -2 * (x - 2) * (x - 8)
if g > 0 :
print(x)
g > 0 (strictement) les exclut. Seules les valeurs entières 3, 4, 5, 6, 7 vérifient g(x) > 0. La réponse B correspondrait à un coefficient a positif.
Écris un programme qui affiche la hauteur h(x) pour x = 0, 2, 4, 6, …, 20 (tous les 2 mètres).
Rappel : h(x) = −0.5 * x * (x − 20).
Astuce : range(0, 21, 2) génère 0, 2, 4, …, 20.
for x in range(0, 21, 2) :
h = -0.5 * x * (x - 20)
print(h)
On obtient : 0, 18, 32, 42, 48, 50, 48, 42, 32, 18, 0 — la symétrie est parfaitement visible. Le maximum est bien 50 m en x = 10 m (milieu du pont).
Un bateau doit passer sous le pont. Il a besoin d'un passage d'au moins 40 mètres de hauteur.
Écris un programme qui parcourt x de 0 à 20 et affiche, pour chaque valeur entière de x, si le passage est possible ("OK") ou non ("trop bas") selon que h(x) est supérieure ou non à 40.
Tu auras besoin de : une boucle for, une condition if / else, et un print().
for x in range(0, 21) :
h = -0.5 * x * (x - 20)
if h > 40 :
print(x, "OK")
else :
print(x, "trop bas")
Le passage est possible (h > 40) pour x = 6, 7, 8, 9, 10, 11, 12, 13, 14 — soit sur 9 mètres de large au milieu du pont. On peut vérifier : h(6) = −0,5 × 6 × (−14) = 42 m. Algébriquement, h(x) > 40 ⟺ −0,5x(x−20) > 40 ⟺ x² − 20x + 80 < 0, dont les racines sont ≈ 5,53 et 14,47.