我正在编写一个python二次方程求解器,它工作正常,然后我又跑了一次,它给了我以下错误:
Traceback (most recent call last):
File "/Users/brinbrody/Desktop/PythonRunnable/QuadraticSolver.py", line 18, in <module>
rted = math.sqrt(sqb-ac4)
ValueError: math domain error
这是我的代码:
#Quadratic Formula Solver
#Imports
import math
#User Inputs
a = int(input("a = "))
b = int(input("b = "))
c = int(input("c = "))
#Variables
sqb = b**2
ac4 = 4*a*c
a2 = 2*a
negb = 0-b
#Calculations
rted = math.sqrt(sqb-ac4)
top1 = negb + rted
top2 = negb - rted
low1 = round(top1/a2, 2)
low2 = round(top2/a2, 2)
#Output
print("Possible Values of x:")
print("1.",low1)
print("2. ",low2)
此错误与我尝试的每个输入一致。
答案 0 :(得分:0)
正如xli所说,这是由于sqb-ac4
返回负值,而python数学模块不能取负值的平方根。
解决此问题的方法是:
import sys
determin = sqb - ac4
if determin < 0:
print("Complex roots")
sys.exit()
else:
rted = math.sqrt(determin)