Вы можете использовать simplify
из пакета sympy
(не в стандартной библиотеке - вам придется его установить):
from sympy import simplify, sqrt
def quadratic(a, b, c):
a = simplify(a) # convert inputs into objects used by simplify
b = simplify(b)
c = simplify(c)
delta = (b**2)-4*a*c
if delta == 0:
x = (-b)/2*a
return f"This Quadratic equation has 1 solution: {x}"
elif delta < 0 :
return "This Quadratic equation has no real solutions: "
else:
x1 = ((-b)-sqrt(delta))/2*a # using sqrt from sympy
x2 = ((-b)+sqrt(delta))/2*a
return f"This Quadratic equation has 2 solutions: {x1} & {x2}"
print(quadratic(12, 0, -1))
Это дает:
This Quadratic equation has 2 solutions: -24*sqrt(3) & 24*sqrt(3)
Другой пример:
print(quadratic(12, 2, -1))
дает:
This Quadratic equation has 2 solutions: -12*sqrt(13) - 12 & -12 + 12*sqrt(13)
На самом деле sympy
также может обрабатывать комплексные числа за вас, так что вы можете избавиться от своего теста без реальных решений ( т.е. удалите elif
, чтобы delta < 0
обрабатывался блоком else:
).
Если вы сделаете это, а затем дадите ему пример:
print(quadratic(12, 2, 1))
, вы получите :
This Quadratic equation has 2 solutions: -12 - 12*sqrt(11)*I & -12 + 12*sqrt(11)*I