Убрал лишние точки с запятыми, убрал лишнюю проверку дискриминанта:
if d >= 0:
т.к. ты уже находишься в ветвлении else после проверки на d < 0, т.е. дискриминант тут точно либо 0, либо больше нуля.
Как уже говорили, нельзя сравнивать числа с плавающей точкой. Тут либо надо использовать класс Decimal, либо самому округлять, либо использовать сравнение разности этих чисел с каким-либо малым числом, так сказать "точностью" вычисления. Итого, как-то так:
import math
print ('Введите значения парметров a, b, c \n')
a = float (input('Введите a\n'))
b = float (input('Введите b\n'))
c = float (input('Введите c\n'))
print ('a = ', a); print ('b = ', b); print ('c = ', c)
if (a == 0) and (b == 0) and (c == 0):
print('x - любое')
if (a == 0) and (b == 0) and (c != 0):
print('Нет решений')
if (a == 0) and (b != 0):
x = - (c / b)
print ('x =', (round (x, 2)))
if (a != 0):
d = b**2 - 4*a*c
if (d < 0):
print ('Нет корней')
else:
x1 = (-b - math.sqrt(d))/(2 * a)
x2 = (-b + math.sqrt(d))/(2 * a)
print(round(x1+x2,2), (-b / a))
print ('Проверка решения по теореме Виета')
precision = 10**-6 # точность вычислений
if (x1 + x2 - (-b / a) < precision) and (x1 * x2 - (c / a) < precision):
print ('Успешно')
print ('x1 =', (round (x1, 2)), 'x2 =', (round (x2, 2)))
else:
print ('ошибка')