2017-05-05 1 views
0

J'essaye de créer un programme simple à semer pour les racines d'une équation quadratique en python, mais mon code ne fonctionne pas. Voici ce que j'ai jusqu'à présent:La formule quadratique de Python ne fonctionne pas

from math import * 
def qf(a, b, c): 
    print((-b+sqrt(b*b-4*a*c))/(2*a)); 
    print((-b-sqrt(b*b-4*a*c))/(2*a)); 
while(True): 
    qf(input("A: "), input("B: "), input("C: ")) 

Et voici les erreurs que je reçois lors de l'évaluation:

Traceback (most recent call last): 
    File "qf.py", line 6, in <module> 
    qf(input("A: "), input("B: "), input("C: ")) 
    File "qf.py", line 3, in qf 
    print((-b+sqrt(b*b-4*a*c))/(2*a)); 
ValueError: math domain error 

Quelles erreurs ai-je fait, et comment puis-je les corriger?

+0

Avec quelles entrées avez-vous testé? 'b * b-4 * a * c' peut être négatif et vous ne pouvez pas appeler' sqrt' avec ça. – Flurin

+0

Ensuite, il peut également y avoir le problème que 'input()' renvoie 'str' et vous aurez besoin de' float' ou 'int'. – Flurin

+0

Saisie 1, 2 et 3. – Programah

Répondre

2

Essayez ceci:

from math import * 
def qf(a, b, c): 
    if b*b < 4*a*c: 
     print("cannot compute qf({}, {}, {})".format(a, b, c)) 
     return 
    print((-b+sqrt(b*b-4*a*c))/(2*a)); 
    print((-b-sqrt(b*b-4*a*c))/(2*a)); 
while(True): 
    qf(float(input("A: ")), float(input("B: ")), float(input("C: "))) 

Vous devez vous assurer que vous ne réussissez pas à des valeurs négatives sqrt(). De plus, vous devez convertir le résultat de input() en un type numérique.