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]

1
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

1
def rec_moy(L):
2
  # la fonction retourne la moyenne de la liste L
3
  S=0                    # initialisation de S à 0
4
  n=len(L)               # longueur de la liste L
5
  for i in range (n):    # i varie de 0 inclus à n exclu
6
    S=S+L[i]             # on pourrait écrire S+=L[i]
7
  moyenne=S/n            # calcul de la moyenne
8
  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

1
def rec_variance(L):
2
  # la fonction retourne la variance de la liste L
3
  S=0                    # initialisation de S à 0
4
  n=len(L)               # longueur de la liste L
5
  for i in range (n):    # i varie de 0 inclus à n exclu
6
    S=S+L[i]**2          # on pourrait écrire S+=L[i]**2
7
  variance=S/n-rec_moy(L)**2
8
  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

1
def rec_ecart_type(L):
2
  # la fonction retourne l'écart-type (float) de la liste L
3
  import math as m                    # module math renommé m
4
  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,

1
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

1
def rec_moy2(L:list)->float:
2
  # la fonction retourne la moyenne float des éléments
3
  # de la liste L
4
  # on pourrait écrire : def rec_moy2(L:[float])->float:
5
  # L est une liste de nombres flottants
6
  assert type (L)==list
7
  assert len(L)>0
8
  S=0                    # initialisation de S à 0
9
  n=len(L)               # longueur de la liste L
10
  for i in range (n):    # i varie de 0 inclus à n exclu
11
    assert type(L[i])==float or type(L[i])==int
12
    S=S+L[i]             # on pourrait écrire S+=L[i]
13
  moyenne=S/n            # calcul de la moyenne
14
  return moyenne         # retourne la moyenne de L