Одна из самых неприятных вещей в алгоритмических языках - это сравнение вещественных чисел, которое может работать некорректно. Например, если число x=1.999999999999999999999 объявить как вещественное восьмибайтного типа float, то оно для компьютера равно двум, хотя на самом деле меньше.
В Пайтоне есть специальный тип fractions.Fraction, который помогает избежать такого рода ошибок при сравнении вещественных чисел, представляемых в компьютере с ограниченной точностью. Поэтому я бы лучше как-нибудь так сделала:
import fractions
A, B, C = map(fractions.Fraction, input('A B C: ').split())
if A:
D = B * B - 4 * A * C
if D > 0: print('Два вещественных корня')
else: print('Нет вещественных корней' if D\
else 'Один вещественный корень')
else: print('Уравнение не квадратное!')
В случае А=0 это уравнение хоть и можно считать квадратным, так как неизвестный икс в нём возводится в квадрат, только оно тогда вырожденное.
В случае А≠0 и B² = 4AC у уравнения нет вещественных корней (корней в буквальном смысле, то есть как во множественном числе!), а есть лишь один единственный вещественный корень кратности 2. Это тоже надо учитывать!