嘿,我在使用python的复数函数计算二次方程的根时遇到问题。
当我尝试
时>>> if root<0:
root=abs(complex(root))
j=complex(0,1)
x1=(-b+sqrt(root))/2*a
x2=(-b-j+sqrt(root))/2*a
else:
我收到错误消息
SyntaxError:语法无效
然后,当我尝试改为
时>>> if root<0:
root=abs(complex(root))
j=complex(0,1)
x1=(-b+j+sqrt(root))/2*a
x2=(-b-j+sqrt(root))/2*a
break
我收到错误
SyntaxError:'break'在循环外部
我想把:
else:
x1=(-b+j+sqrt(root))/2*a
x2=(-b-j+sqrt(root))/2*a
但它不起作用。
请帮忙吗?
答案 0 :(得分:2)
不确定我理解你的问题,但看起来你没有正确缩进 - Python使用空格来标记块,所以上面应该是这样的:
if root<0:
root=abs(complex(root))
j=complex(0,1)
x1=(-b+j+sqrt(root))/2*a
x2=(-b-j+sqrt(root))/2*a
else:
x1=(-b+j+sqrt(root))/2*a
x2=(-b-j+sqrt(root))/2*a
虽然这没有意义,因为x1
和x2
在两个分支中的计算方式相同,j
分支中未定义else
...所以也许你真正想要的是
if root<0:
root=abs(complex(root))
j=complex(0,1)
x1=(-b+j+sqrt(root))/2*a
x2=(-b-j+sqrt(root))/2*a
我的困惑之一是提示:enter code here
- 这不是标准的Python提示,所以要么你改变了提示,要么你正在使用Python的其他程序。无论如何,希望这会有所帮助。
答案 1 :(得分:1)
尝试导入复杂的数学模块,可以通过多种形式在线获取。我相信标准python发行版中的复杂数字以及numpy / scipy都有一个实现。您还可以尝试单独计算根的真实和复杂组件(通过包含基于判别式的值的测试)。此外,您的if和elif测试是相同的。
答案 2 :(得分:0)
正如@bythenumbers指出的那样,你的if和elif条件是相同的。此外,您是否获得例外或错误的值?另外,如果您有j+sqrt(root)
,那么您的意思是j*sqrt(root)
吗?