我想定义一个返回根值的函数。它应该总是返回一些东西。
如果 b**2 - 4ac < 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 []
最佳答案
对于负数,math.sqrt
未定义,因此返回 ValueError
。
如果您希望返回负数的复数平方根,请使用 x**0.5
:
x = (b**2 - 4*a*c)**0.5
或者使用cmath.sqrt
实现:
from cmath import sqrt
x = sqrt(b**2 - 4*a*c)
关于python - 二次函数的根 : math domain error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50671180/