Python的二次多项式的根

时间:2017-09-14 17:57:26

标签: python

我知道这要求我使用if语句。但是我怎么能这样做呢?

编写一个程序qroots.py,它从命令行读取三个浮点数a,b,c,并计算/打印二次多项式ax**2 + bx + c = 0的根。你的程序只需处理存在真根的情况,即当a,b,c的值产生非负判别式b**2 − 4ac >= 0时。

当判别式为否定时,程序应该只打印一条没有真正根源的消息。

提示:math.sqrt()是返回数字平方根的内置函数。

到目前为止,我有这个:

import sys
import math

a = float(sys.argv[1])
b = float(sys.argv[2])
c = float(sys.argv[3])

终端应该这样做:

  

qroots.py 1 -3 2

     

1.0 2.0

2 个答案:

答案 0 :(得分:0)

首先从命令行读取输入(提示:使用sys.argv)。此外,您还需要弄清楚如何将字符串转换为python数字。

然后检查是否b**2-4*a*c < 0。如果是,那么就提出ValueError关于没有真正的根源。

否则解决根源问题:roots = (b ± sqrt(b**2-4*a*c)) / (2*a)

答案 1 :(得分:0)

我的评论和@Joran Beasley的答案中描述的程序:

import sys
from math import sqrt

a, b, c = sys.argv[1:]
a = float(a)
b = float(b)
c = float(c)
if b**2-4*a*c < 0:
    print("there's no real root")
else:
    print((-b+sqrt(b**2-4*a*c))/(2*a), (-b-sqrt(b**2-4*a*c))/(2*a))

如果您愿意,还可以检查判别式是否为零,并且只打印两种解决方案中的一种(在这种情况下显然相等)。