-1 python
我正在用 Python 编写一个程序,但无法克服这个异常
\n\nfrom 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\'\nRun Code Online (Sandbox Code Playgroud)\n\n你能帮我解决这个问题吗?
\nsqrt不能产生负面结果。当传递负数时,您会得到一个复杂类型,它不会与整数/浮点数进行比较,这解释了错误消息。
现在你真正的问题是:
您必须测试 的符号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。导入sqrt自math(当传递负值时引发异常,否则返回浮点值)。
| 归档时间: |
|
| 查看次数: |
18752 次 |
| 最近记录: |