用Python求二次多项式的根

用Python求二次多项式的根,python,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 = f

我知道这要求我使用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.02.0


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

然后检查
b**2-4*a*c<0
。如果是,则提出一个
ValueError
,说明没有真正的根


否则求根:
根=(b±sqrt(b**2-4*a*c))/(2*a)
我的评论和@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))
导入系统 从数学导入sqrt a、 b,c=sys.argv[1:] a=浮动(a) b=浮动(b) c=浮动(c) 如果b**2-4*a*c<0: 打印(“没有真正的根”) 其他: 打印(-b+sqrt(b**2-4*a*c))/(2*a),(-b-sqrt(b**2-4*a*c))/(2*a))
如果您愿意,您还可以检查判别式是否为零,并且只打印两种解决方案中的一种(在本例中,这两种解决方案显然相等)。

请阅读如何询问。这不是一个解决家庭作业的网站。展示你所做的事情提示:欢迎来到StackOverflow!在问这个问题之前,你读过了吗?@YanetPedraza不是家庭作业,在线学习,我现在就编辑。这通常意味着你需要的是半个小时的时间和当地的导师在一起,或是走一走,而不是堆积如山。