# Créé par Bonmatin Frédéric, le 12/03/2019 en Python 3.4
# et modifié par Emmanuelle Lafont le 21/03/2019

# Ce programme calcule le pourcentage d'éléments présents dans l'intervalle
# [x_barre-2*sigma ; x_barre+2*sigma]
# de la liste "valeurs" pondérée par la liste "effectifs"

# ........................................................................

taille=int(input("Quel est le nombre de valeurs différentes de votre liste ?"))

valeurs=[]
effectifs=[]
xi=''
ni=''
i=0
for i in range (taille):
    xi=float(input("Saisir la valeur (le centre de classe pour une série à caractère continu) de rang "+str(i+1)))
    ni=int(input("Saisir l'effectif correspondant"))
    valeurs.insert(i,xi)       #valeurs.insert(i,xi) ajoute la dernière valeur saisie à la suite des autres valeurs dans la liste 'valeurs'
    effectifs.insert(i,ni)
    i=i+1

print("Vous avez saisi la liste de valeurs : ",valeurs,", constituée de",len(valeurs),"éléments")
print("pondérée par les effectifs : ",effectifs,".")

import math

# .....................................................................

produits=[]

for i in range(taille):
    ni=effectifs[i]
    xi=valeurs[i]
    nixi=ni*xi
    produits.insert(i,nixi)

somme_nixi=sum(produits)

N=sum(effectifs)

x_barre=somme_nixi/N

# Calcul de l'écart-type

produits_carrés=[]

for i in range(taille):
    ni=effectifs[i]
    xi=valeurs[i]
    nixi_carré=ni*xi*xi
    produits_carrés.insert(i,nixi_carré)

somme_nixi_carre=sum([produit for produit in produits_carrés])

sigma=round(math.sqrt(somme_nixi_carre/N - x_barre**2),4) # arrondi à 4 décimales

# ......................................................................

min = x_barre-2*sigma
max = x_barre+2*sigma

# ......................................................................

valeurs=sorted(valeurs)   # tri de la liste
n=0
for i in range(taille):
    if valeurs[i]>=min and valeurs[i]<=max:
        n=n+effectifs[i]

# ......................................................................

p=round(n/N*100,2)   # arrondi à 2 décimales

# ......................................................................

print("moyenne = ",x_barre)
print("écart-type = ",sigma)
print("intervalle = [ ",min," , ",max," ]")
print("nombre d'éléments dans l'intervalle =",n)
print("pourcentage =",p)
