2017-04-04 8 views
-1

私はPythonでプログラムを書いて、私はこの問題はTypeError:「<=」「複雑」と 'int型のインスタンス間でサポートされていません

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

あなたの問題が何であるかを明確に表示するために(代わりにcmathから 'の...')数学の輸入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) 

(BTW末尾のセミコロンをドロップ)

関連する問題