2017-05-05 4 views
0

파이썬에서 2 차 방정식의 근원을위한 유일한 프로그램을 만들려고합니다.하지만 코드가 작동하지 않습니다.파이썬 이차 방정식이 작동하지 않습니다.

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: ")) 

을 그리고 여기 평가할 때 내가 얻을 오류입니다 :

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 

내가 만든 어떤 오류, 그리고 내가 그들을 어떻게 해결할 수 있습니다 여기에 지금까지 가지고 무엇인가?

+0

테스트 항목은 무엇입니까? 'b * b-4 * a * c'는 음수 일 수 있고'sqrt'를 호출 할 수 없습니다. – Flurin

+0

그러면'input()'이'str'을 반환하고'float' 또는'int'가 필요할 것입니다. – Flurin

+0

1, 2 및 3을 입력하십시오. – Programah

답변

2

이 시도 : 당신은 당신이 sqrt()에 음수 값을 통과하지 않도록해야

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: "))) 

. 또한 input()의 결과를 숫자 형식으로 변환해야합니다.

관련 문제