Программа выдает ошибку(учитывая, что входные данные : 0.1; -1.5; 10 ), код пишу на питоне. Должно выдать Нет корней. Заранее спасибо за помощь)

a = float(input()) #код
b = float(input())
c = float(input())
D = b ** 2 - 4 * a * c
from math import *

x = (-b + sqrt(D)) / (2 * a)
x2 = (-b - sqrt(D)) / (2 * a)
if D < 0:
    print("Нет корней")
elif D == 0:
    print(-b / (2 * a))
else:
    print(min(x,x2), max(x, x2), sep="\n")


    Error:
    Traceback (most recent call last):
      File "jailed_code", line 9, in <module>
        x = (-b + sqrt(D)) / (2 * a)
    ValueError: math domain error

Ответы (1 шт):

Автор решения: CrazyElf

Ну потому что проверять знак D нужно до того, как вы пытаетесь из него корень извлечь:

D = b ** 2 - 4 * a * c
if D < 0:
    print("Нет корней")
elif D == 0:
    print(-b / (2 * a))
else:
    x = (-b + sqrt(D)) / (2 * a)
    x2 = (-b - sqrt(D)) / (2 * a)
    print(min(x,x2), max(x, x2), sep="\n")
→ Ссылка