Exercice : Moyenne, variance et écart-type
On considère la liste de nombres : L=[9,10,11,20.5,0,12.0,-5,-8.3e1]
L=[9,10,11,20.5,0,12.0,-5,-8.3e1]
Question
Ecrire une fonction rec_moy qui admet comme argument L une liste non vide de nombres et retourne la moyenne de L.
Solution
def rec_moy(L):
# la fonction retourne la moyenne de la liste L
S=0 # initialisation de S à 0
n=len(L) # longueur de la liste L
for i in range (n): # i varie de 0 inclus à n exclu
S=S+L[i] # on pourrait écrire S+=L[i]
moyenne=S/n # calcul de la moyenne
return moyenne # retourne la moyenne de L
Question
Ecrire une fonction rec_variance qui admet comme argument L une liste non vide de nombres et retourne la variance de la liste L.
Solution
def rec_variance(L):
# la fonction retourne la variance de la liste L
S=0 # initialisation de S à 0
n=len(L) # longueur de la liste L
for i in range (n): # i varie de 0 inclus à n exclu
S=S+L[i]**2 # on pourrait écrire S+=L[i]**2
variance=S/n-rec_moy(L)**2
return variance # retourne la moyenne de L
Question
Ecrire une fonction rec_ecart_type qui admet comme argument L une liste non vide de nombres et retourne l’écart-type de la liste L.
Solution
def rec_ecart_type(L):
# la fonction retourne l'écart-type (float) de la liste L
import math as m # module math renommé m
return (m.sqrt(rec_variance(L))) # retourne l'écart-type de L
Les en-têtes des fonctions peuvent être annotés pour préciser les types des paramètres et du résultat. Ainsi,
def uneFonction (n:int, X:[float, c:str, u)-> list :])
signifie que la fonction uneFonction prend quatre paramètres n, X, c et u, où n est un entier, X une liste de nombres à virgule flottante et c une chaîne de caractères ; le type de u n’est pas précisé. Cette fonction renvoie une liste.
Question
Ecrire une fonction rec_moy2 qui admet comme argument L une liste non vide de nombres réels ou flottants et retourne la moyenne de la liste L. Annoter l’en-tête de la fonction pour préciser le type des données attendues en entrée et fournies en retour. Utiliser des assertions pour vérifier le type de L, le nombre d’éléments de L ainsi que le type des éléments de L.
Solution
def rec_moy2(L:list)->float:
# la fonction retourne la moyenne float des éléments
# de la liste L
# on pourrait écrire : def rec_moy2(L:[float])->float:
# L est une liste de nombres flottants
assert type (L)==list
assert len(L)>0
S=0 # initialisation de S à 0
n=len(L) # longueur de la liste L
for i in range (n): # i varie de 0 inclus à n exclu
assert type(L[i])==float or type(L[i])==int
S=S+L[i] # on pourrait écrire S+=L[i]
moyenne=S/n # calcul de la moyenne
return moyenne # retourne la moyenne de L