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
A voir également:
- Erreur programme résolution d'équation du second degré
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Message programmé iphone - Guide
- Degré clavier iphone - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
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
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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.
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)