我知道这要求我使用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
答案 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))
如果您愿意,还可以检查判别式是否为零,并且只打印两种解决方案中的一种(在这种情况下显然相等)。