类型错误:“complex”和“int”实例之间不支持“<=”

-1 python

我正在用 Python 编写一个程序,但无法克服这个异常

\n\n
from cmath import sqrt;\n\na = int(input("Podaj pierwsza liczbe: "));\nb = int(input("Podaj druga liczbe: "));\nc = int(input("Podaj trzecia liczbe: "));\n\nif a<=0:\n    print("Nie mo\xc5\xbcna policzyc delty");\nelse:\n        delta = sqrt(b*b-4*a*c);\n        print("delta wynosi:",delta);\n\nif (delta <= 0):\n    print("Nie obliczymy miejsca zerowe");\nelif (delta == 0):\n        x = -b/(2*a);\n        print("Miejsce zerowe wynosi:",x);\nelif (delta >= 0):\n        x1 = ((-b-delta)/(2*a));\n        x2 = ((-b+delta)/(2*a));\n        print("Pierwsze miejsce zerowe wynosi:",x1);\n        print("Drugie miejsce zerowe:",x2);\n\n\n\nTraceback (most recent call last):\n  File "C:/Users/Administrator/AppData/Local/Programs/Python/Python36-32/Rownanie kwadratowe.py", line 14, in <module>\n    if (delta <= 0):\nTypeError: \'<=\' not supported between instances of \'complex\' and \'int\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

你能帮我解决这个问题吗?

\n

Jea*_*bre 6

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)
Run Code Online (Sandbox Code Playgroud)

无需sqrt从导入cmath。导入sqrtmath(当传递负值时引发异常,否则返回浮点值)。