Erreur programme résolution d'équation du second degré
AlexC
-
AlexC -
AlexC -
Bonjour,
Sur un site d'exercices, il a été demandé d'implémenter 3 fonctions permettant de résoudre une équation du second degré. Voici mon code:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
from math import sqrt
def rho (a,b,c):
return b*b-4*a*c
def n_solutions(a,b,c):
if rho(a,b,c)<0:
return 0
elif rho(a,b,c)==0:
return 1
else:
return 2
def solution(a,b,c):
nb=n_solutions(a,b,c)
if nb==0:
return None
elif nb==1:
return -b/(2*a)
elif nb==2:
return ((-b+sqrt(rho(a,b,c)))/(2*a) , (-b-sqrt(rho(a,b,c)))/(2*a))
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Après vérification, les résultats obtenus sont corrects, cependant,
le correcteur automatique affiche :
----------------------------------------------------------------------------------------------------------------------------------------------------------------
ERROR: test_find_the_min_solution (TestEq.TestEq)
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Traceback (most recent call last):
File "./src/TestEq.py", line 76, in test_find_the_min_solution
File "/usr/lib64/python3.5/unittest/case.py", line 908, in assertAlmostEqual
if round(abs(second-first), places) == 0:
TypeError: unsupported operand type(s) for -: 'tuple' and 'float'
----------------------------------------------------------------------------------------------------------------------------------------------------------------
J'ai compris que la dernière ligne pose problème mais je ne parviens pas à corriger mon erreur.
Merci d'avance
Alex
Sur un site d'exercices, il a été demandé d'implémenter 3 fonctions permettant de résoudre une équation du second degré. Voici mon code:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
from math import sqrt
def rho (a,b,c):
return b*b-4*a*c
def n_solutions(a,b,c):
if rho(a,b,c)<0:
return 0
elif rho(a,b,c)==0:
return 1
else:
return 2
def solution(a,b,c):
nb=n_solutions(a,b,c)
if nb==0:
return None
elif nb==1:
return -b/(2*a)
elif nb==2:
return ((-b+sqrt(rho(a,b,c)))/(2*a) , (-b-sqrt(rho(a,b,c)))/(2*a))
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Après vérification, les résultats obtenus sont corrects, cependant,
le correcteur automatique affiche :
----------------------------------------------------------------------------------------------------------------------------------------------------------------
ERROR: test_find_the_min_solution (TestEq.TestEq)
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Traceback (most recent call last):
File "./src/TestEq.py", line 76, in test_find_the_min_solution
File "/usr/lib64/python3.5/unittest/case.py", line 908, in assertAlmostEqual
if round(abs(second-first), places) == 0:
TypeError: unsupported operand type(s) for -: 'tuple' and 'float'
----------------------------------------------------------------------------------------------------------------------------------------------------------------
J'ai compris que la dernière ligne pose problème mais je ne parviens pas à corriger mon erreur.
Merci d'avance
Alex
4 réponses
-
Je n'arrive pas a le poster ici avec une indentation valide sans le réécrire intégralement mais le problème ne viens pas de là.
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, merci d'utiliser les balises de code pour poster du code.
je me demande s'il est bien utile d'entourer les réponses multiples de parenthèses. -
Merci voici une version correctement balisée.
def rho (a,b,c): return b*b-4*a*c def n_solutions(a,b,c): if rho(a,b,c)<0: return 0 elif rho(a,b,c)==0: return 1 else: return 2 def solution(a,b,c): nb=n_solutions(a,b,c) if nb==0: return None elif nb==1: return -b/(2*a) elif nb==2: return ((-b+racine_carree(rho(a,b,c)))/(2*a) , (-b-racine_carree(rho(a,b,c)))/(2*a)) -
Voici:
def rho (a,b,c): return b*b-4*a*c def n_solutions(a,b,c): if rho(a,b,c)<0: return 0 elif rho(a,b,c)==0: return 1 else: return 2 def solution(a,b,c): nb=n_solutions(a,b,c) if nb==0: return None elif nb==1: return -b/(2*a) elif nb==2: return (-b+racine_carree(rho(a,b,c)))/(2*a) , (-b-racine_carree(rho(a,b,c)))/(2*a)