我想定义一个返回根值的函数。应该总是回归。
如果b ** 2 - 4 * a * c< 0,然后它应该返回[],但它显示为错误。
我的代码现在是这样的:
from math import*
def solve(a, b, c):
x = sqrt(b**2 - 4*a*c)
if x > 0:
x1 = (-b + x)/(2*a)
x2 = (-b - x)/(2*a)
return [x1, x2]
elif x == 0:
x1 = x2 = -b/(2*a)
return [x1]
else:
return []
谢谢!
答案 0 :(得分:1)
sqrt
不接受负值。为避免这种情况,您可以查看“其他”内容。计算平方根之前的条件:
from math import*
def solve(a, b, c):
formula = b**2 - 4*a*c
if formula < 0:
return []
x = sqrt(formula)
if x > 0:
x1 = (-b + x)/(2*a)
x2 = (-b - x)/(2*a)
return [x1, x2]
elif x == 0:
x1 = x2 = -b/(2*a)
return [x1]
答案 1 :(得分:0)
负数的sqrt不是由math模块的sqrt函数定义的,因此返回ValueError。请改用x ** 0.5。如果x为负数,则返回复数
x=(b**2-4*a*c)**0.5
否则这样做:
from cmath import sqrt
x=sqrt(b**2-4*a*c)
它还会返回负数的复数值
我希望有所帮助!