二次方程求解器数学域误差

时间:2017-02-16 13:14:55

标签: python

我正在尝试制作二次方程求解器,但每次运行它时,都会显示数学域错误。任何人都可以帮我修复它吗?我是Python的新手。

import math
def quadratic(a, b, c):
    return [((-b + i * math.sqrt(b**2 - 4*a*c)) / (2 * a)) for i in (-1,1)]

a = int(input("What is the value of a? "))
b = int(input("What is the value of b? "))
c = int(input("What is the value of c? "))
print(quadratic(a, b, c))

1 个答案:

答案 0 :(得分:0)

您的代码一般有效,但应检查b**4-a*c是否为正数。这(可能)是您收到错误的原因

def quadratic(a, b, c):
    D = b**2 - 4*a*c
    if D >= 0:
        return [((-b + i * math.sqrt(D)) / (2 * a)) for i in (-1, 1)]
    else:
        return None