Salut !
Si a est positif, S pointe vers les y négatifs et si a est négatif, S pointe vers les y positifs.
Du coup si a est positif et l'ordonnée de S est positive, ça veut dire que la courbe ne croise jamais l'axe des abscisses. Il n'y a donc aucune racine.
Si a est positif et l'ordonnée de S négative, il y a alors 2 racines.
Si S est sur l'axe des abscisses, alors l'abscisse de S constitue la seule et unique racine de la fonction.
Pour a négatif, il n'y a aucune racine si l'ordonnée de S est négative, 2 si elle est positive et 1 seule si S est sur l'axe des abscisses.
Pour le programme, je ne connais pas le langage Python, mais ça doit être quelque chose dans ce genre :
déclaration des variables;
"Sx" = -b/2a //valeur de x pour laquelle la dérivée s'annule et donc l'abscisse de S
"Sy" = a("Sx")² + b("Sx") + c
IF a > 0 et "Sy" > 0
alors I = 0 //I est le nombre de racine
ELSE IF a > 0 et "Sy" < 0
alors I = 2
ELSE IF a < 0 et "Sy" > 0
alors I = 2
ELSE IF a < 0 et "Sy" < 0
alors I = 0
ELSE
I = 1 et x = "Sx"