2017-04-04 26 views
-1

我用Python寫程序,我無法解決了這個問題類型錯誤:「<=」沒有的實例之間支持「複雜」和「廉政」

from cmath import sqrt; 


a = int(input("Podaj pierwsza liczbe: ")); 
b = int(input("Podaj druga liczbe: ")); 
c = int(input("Podaj trzecia liczbe: ")); 

if a<=0: 
    print("Nie można policzyc delty"); 
else: 
     delta = sqrt(b*b-4*a*c); 
     print("delta wynosi:",delta); 

if (delta <= 0): 
    print("Nie obliczymy miejsca zerowe"); 
elif (delta == 0): 
     x = -b/(2*a); 
     print("Miejsce zerowe wynosi:",x); 
elif (delta >= 0): 
     x1 = ((-b-delta)/(2*a)); 
     x2 = ((-b+delta)/(2*a)); 
     print("Pierwsze miejsce zerowe wynosi:",x1); 
     print("Drugie miejsce zerowe:",x2); 



Traceback (most recent call last): 
    File "C:/Users/Administrator/AppData/Local/Programs/Python/Python36-32/Rownanie kwadratowe.py", line 14, in <module> 
    if (delta <= 0): 
TypeError: '<=' not supported between instances of 'complex' and 'int' 

,你能不能幫我解決了這個我搜索東西在互聯網和書籍,但我不能看到

+1

嘗試使用'從數學進口sqrt'爲你的問題是什麼更清晰的指示。 – RoadieRich

回答

1

sqrt不能產生負面結果。當傳遞一個負數時,你會得到一個複雜類型,它不會與整數/浮點數比較,這就解釋了錯誤信息。

現在你真正問題:

你要測試的b*b-4*a*c的跡象(這已經是判別),且僅當正執行平方根。

delta = b*b-4*a*c 
... 
if delta > 0: 
    sqdelta = sqrt(delta) 
    x1 = (-b-sqdelta)/(2*a) 
    x2 = (-b+sqdelta)/(2*a) 

(從CMATH,而不是`...`)(BTW下降尾隨分號)

相關問題