2016-10-15 4 views
0

Я пишу питон квадратного уравнения решатель, и он работает нормально, то я побежал это в другой раз, и он дал мне следующую ошибку:Квадратичной Формула Solver Ошибка

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) 

Эта ошибка согласуется с каждым вводом, который я пробовал.

+3

Это связано с 'SQB-ac4' быть отрицательным. – xli

+1

Вы должны указать хотя бы один пример ввода, который вызвал эту ошибку. – dkasak

+0

Ваш определитель b * b - 4 * a * c отрицателен, поэтому ваше уравнение не имеет корней (решений). Вы должны проверить это. Если у него нет корней, вся парабола лежит выше или ниже оси х. –

ответ

0

Как сказал xli, это вызвано sqb-ac4, возвращающим отрицательное значение, и математический модуль python не может принимать квадратный корень отрицательного значения.

способ исправить это:

import sys 
determin = sqb - ac4 
if determin < 0: 
    print("Complex roots") 
    sys.exit() 
else: 
    rted = math.sqrt(determin) 
+0

Спасибо. Работала отлично. –