2017-05-05 68 views
0

我想創建一個簡單的程序來尋找python中二次方程的根,但是我的代碼不工作。以下是我迄今爲止:Python二次公式不起作用

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

試試這個:

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

你需要確保你沒有通過負值sqrt()。此外,您應該將input()的結果轉換爲數字類型。