它一直在说ValueError:数学域错误

时间:2017-11-28 15:12:08

标签: python

我正在计算机科学课上做一个数学项目,我需要帮助修复我的代码...这是二次方程式

import math

play = 0

print("ax**2 + bx + c = 0")

while play==0:

    a = float(input("Enter A: "))

    b = float(input("Enter B: "))

    c = float(input("Enter C: "))

    d = (b**2) - (4*a*c)

solution1 = (-b - math.sqrt (d))/(2*a)
solution2 = (-b + math.sqrt (d))/(2*a)

print("The X value's are", solution1 ,solution2)
break

我不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:2)

您没有验证二次方程没有解的情况。查看示例输入:

gonczor@wiktor-papu:~/tmp$ python3 mymath.py 
ax**2 + bx + c = 0
Enter A: 1
Enter B: 2
Enter C: 1
The X value's are -1.0 -1.0
gonczor@wiktor-papu:~/tmp$ python3 mymath.py 
ax**2 + bx + c = 0
Enter A: 1
Enter B: 5
Enter C: 7
Traceback (most recent call last):
  File "mymath.py", line 17, in <module>
    solution1 = (-b - math.sqrt (d))/(2*a)
ValueError: math domain error

您正试图用负数制作平方根。