Sagot :
1) On te demande de créer une fonction Python delta(a,b,c) pour retourner le discriminant de (E).
Premièrement, avant d'écrire tout algorithme, tu vas poser sur le papier (ou dans ta tête si tu es à l'aise) les éléments que tu vas utiliser :
- le nom de la fonction
- l'équation (E)
- la formule du discriminant
Deuxièmement, tu vas commencer à structurer ton algorithme :
- Tu définis ta fonction --> def ...(...) : (n'oublie pas « : » !)
- Tu définis le « x » de l'équation (à la valeur que tu souhaites, ça n'a pas d'impact pour la suite de l'algorithme)
- Tu entres ton équation avec la formule donnée (attention à ajouter une lettre ou un mot qui précède cette équation --> ex. : E = ...)
- Tu entres la formule du discriminant (attention à ajouter une lettre ou un mot qui précède cette formule --> ex. : d = ...)
- Tu retournes le résultat recherché (ici le discriminant) --> return ...
Enfin, tu rédiges (ou tu le tapes sur l'ordi) au propre ton algorithme.
2) On te demande de créer une fonction Python nombre_solutions(a,b,c) pour retourner le nombre de solutions de (E).
Comme on te le précise (et en toute logique) tu vas utiliser la fonction delta(a,b,c) que tu viens de créer dans le 1). Pour ce faire, tu vas légèrement modifier cette fonction :
- le nom de la fonction qui passe de delta(a,b,c) à nombre_solutions(a,b,c)
- l'ajout d'une boucle
- le résultat que tu demandes à retourner
Procédons comme tout à l'heure par étapes :
- Tu définis ta fonction
- Tu définis le « x » (qui n'a toujours pas d'impact sur le résultat retourné)
- Tu entres ton équation (E)
- Tu entres la formule du discriminant
- Tu ajoutes une boucle
- Tu exprimes les conditions (attention à l'indentation)
- Tu retournes le résultat recherché selon les conditions
Rappel :
- Lorsque ∆ > 0, deux solutions existent
- Lorsque ∆ = 0, une solution existe
- Lorsque ∆ < 0, aucune solution n'existe
Un problème peut se poser quant au choix de la boucle. Dans cette situation, pose toi simplement la question : qu'est-ce que je cherche à faire ? Dans ce cas, on cherche les solutions. Donc on doit se demander :
- Quel est le résultat si ∆ > 0 ?
- Quel est le résultat si ∆ = 0 ?
- Quel est le résultat si ∆ < 0 ?
Tu remarqueras qu'on a posé une interrogation usant du "si". Je te laisse en déduire quelle boucle il est nécessaire de choisir dans le cas de l'exercice...
Rappel : « = » n'est pas équivalent à « == ». En Python, le signe « = » correspond à l'incrémentation d'une valeur (on dit par exemple que « a devient 1 » pour « a=1 »). Le signe « == » correspond lui bien au "égal" que nous connaissons.
Une fois que tu as tout recopié au propre, tu peux passer à la question suivante.
3) On te demande de créer un autre programme pour donner les solutions de l'équation.
On va aller au plus simple. Je le précise et c'est le cas pour tout cet exercice, il y a d'autres façons de procéder ; ici, je tâche de t'expliquer le plus clair possible. Il y a également d'autres algorithmes possibles.
Donc, dans ce cas, je te propose de reprendre tout simplement ta fonction précédente pour ajouter en son sein quelques éléments :
- l'importation de la bibliothèque math (on va utiliser la racine carrée)
- la formule des deux solutions x1 et x2 pour ∆ > 0
- la formule de l'unique solution x0 pour ∆ = 0
- une phrase qui retourne le fait qu'il n'y a aucune solution pour ∆ < 0
Je vais tâcher d'aller plus rapidement sachant qu'on a expliqué les étapes auparavant. Il faut donc procéder ainsi :
- Tu importes la bibliothèque math
- Tu remplaces le nombre de solutions par tes formules
- Tu retournes tes solutions à la fin de chaque condition concernée
Remarque : Par esthétique, tu peux utiliser des « print(...) » à la place de « return » pour désigner ce que tu renvoies comme résultat. D'ailleurs, c'est ce que tu vas devoir utiliser pour ∆ < 0.
Maintenant que tu as reçu les explications détaillées, je vais te montrer les algorithmes obtenus.
1) def delta(a,b,c) :
x = 1
E = a*x**2 + b*x + c + 0
d = b**2 - 4*a*c
return d
2) def nombre_solutions(a,b,c) :
x = 1
E = a*x**2 + b*x + c + 0
d = b**2 - 4*a*c
if d > 0 :
return 2
elif d == 0 :
return 1
else :
return 0
3) import math
def nombre_solutions(a,b,c) :
x = 1
E = a*x**2 + b*x + c + 0
d = b**2 - 4*a*c
if d > 0 :
x1 = (-b - math.sqrt(d)) / 2*a
x2 = (-b + math.sqrt(d)) / 2*a
return x1, x2
elif d == 0 :
x0 = -b / 2*a
return x0
else :
print("pas de solutions")
J'espère que ces explications ont pu t'aider !