## 5.2 Exercice : Racines d'une quadratique avec une fonction
# Reprendre l'exemple du calcul des racines d'une équation de seconde degré
# et placer les calculs dans la fonction {\tt quadratique(a, b, c)} qui
# reçoit en paramètre les coefficients  {\it a,b} et {\it c} et renvoie les
# racines de cette équation.

from math import sqrt

def quadratique(a, b, c):
  if (a == 0):
    if ( b != 0) :
      return ("Pas quadratique : racine simple x "+str(-c/b))
    else:
      return ("une blague ! ")
  else :
    delta=b*b-4*a*c     #b*b OU b**2
    if(delta < 0) :
      return ("pas de racines réelles")
    else :
      if(delta>0) :             # Le test initial sur la valeur de "a"  montre son intérêt  ici.  
          assert(a != 0)     # Pas utile mais on montre aux élèves l'intérêt de "assert".
          x1=(-b+math.sqrt(delta))/(2*a)
          x2=(-b-math.sqrt(delta))/(2*a)
          return ("x1 = "+str(x1)+ " x2 = "+ str(x2))
      else :   
          x1 = x2 = -b/(2*a)
          return ("racine double x1 = x2 = "+str(x1))  

# La partie principale
a=int(input('Donner le coefficient a : '))
b=int(input('Donner le coefficient b : '))
c=int(input('Donner le coefficient c : ')) 
print(quadratique(a,b,c))      

## 5.3 Exercice : Moyenne et écart type
# Créer une liste de 100 nombres de la distribution N(16,2). 
import random
echantillon=[random.gauss(16,2) for n in range(100)]

def moyenne_liste(liste):
    return sum(liste)/len(liste)

def variance(liste):
    moy=moyenne_liste(liste)
    return moyenne_liste([(x-moy)**2 for x in liste])

# ---------- Partie Principale ----------
# Pour tester nos calculs sans lire des entiers, on fait un tirage Normale
echantillon=[random.gauss(16,2) for n in range(100)]
 
print("Moyenne = " , moyenne_liste(echantillon))
print("Ecart type = " , variance(echantillon)**0.5)           # %*  {\color{magenta} $\sqrt{Var}$}  *)


""" TRACE : 
Moyenne =  15.92301989946788
Ecart type =  1.9934234202474366
"""

# 5.4 Variante : Exercice (suite écart type)

echantillon=[random.gauss(16,2) for n in range(100)]
varia = moyenne([x**2 for x in echantillon])-moyenne(echantillon)**2
print("De la seconde façon : ", varia**0.5)

""" Trace :
De la seconde façon :  1.8839867058987951 
"""