我在二次方程的语法和根计算上总是遇到问题
你好,我在用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: invalid syntax
然后,当我尝试另外一种方式:
>>> 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' outside loop
我想把:
else:
x1=(-b+j+sqrt(root))/2*a
x2=(-b-j+sqrt(root))/2*a
放在下面,但它就是不工作。
请问有什么帮助吗?
3 个回答
0
正如@bythenumbers提到的,你的if和elif条件是一样的。另外,你是遇到了异常情况还是得到了错误的值呢?还有,在你写的j+sqrt(root)
那里,你是不是想写j*sqrt(root)
呢?
1
试着导入一个叫做复杂数学模块的东西,这个模块在网上有很多种形式可以找到。我记得在标准的Python版本里就有处理复杂数的功能,还有numpy和scipy这两个库里也有。你也可以尝试分别计算一下根的实部和虚部(可以通过判断判别式的值来进行测试)。另外,你的if和elif条件判断是一样的。
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。不管怎样,希望这能帮到你。