我继续遇到语法问题并计算二次方程的根

时间:2011-09-05 02:41:36

标签: python

嘿,我在使用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

但它不起作用。

请帮忙吗?

3 个答案:

答案 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

虽然这没有意义,因为x1x2在两个分支中的计算方式相同,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)吗?