Python 类型错误:'<=';在';复杂';和';int';

Python 类型错误:'<=';在';复杂';和';int';,python,Python,我正在用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 =

我正在用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'
来自cmath导入sqrt的
;
a=int(输入(“Podaj-pierwsza-liczbe:”);
b=int(输入(“Podaj druga liczbe:”);
c=int(输入(“Podaj trzecia liczbe:”);

如果
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
导入
sqrt
。从
math
导入
sqrt
(当传递负值时会引发异常,否则会返回浮点值)。

尝试使用
从math导入sqrt
(而不是
从cmath…
)更清楚地指示问题所在。