NSI Première

Exercices Récapitulatif     Correction

Calcul de Moyenne

Exercice 1
Créer une fonction moyenne qui possède deux paramètres : le nombre n de notes qu'on a utilisé et le total cumulé des notes.
Les préconditions : les paramètres n et total sont des nombres entiers positifs.
La postcondition : Votre fonction devra renvoyer la moyenne sous forme d'un integer.

In [2]:
def moyenne(n, total):
    """
    Calcul de la moyenne de n notes
    @param n: (int) nombre entier strictement positif de notes
    @param total: (float) le total cummulé des notes
    @return: (int) la moyenne des notes sous forme d'un entier

    """
    assert n > 0 and isinstance(n, int),"Vous devez entrer un entier strictement positif"
    assert total >= 0 and total <= 20 * n,"Votre total cumulé est faux"
    return int(total / n)

# Autres versions
def moyenne_bis(n, total):
    calcul = total / n
    return int(calcul)
In [12]:
moyenne(12, 89)
Out[12]:
7

Exercice 2
Créer une fonction notes qui possède un seul paramètre : le nombre n de notes qu'on veut rentrer.
Votre fonction devra renvoyer la somme des notes fournies par l'utilisateur.
La précondition de la fonction : le paramètre n est un nombre entier positif.
Aucun test de validité sur les entrées utilisateurs ne sera effectué lors de la saisie dans un premier temps.
La postcondition : la fonction renvoie bien la somme des notes rentrées (en considérant que les entrées utilisateurs sont toutes correctes).
Il faudra utiliser une boucle bornée FOR, du input et de la transformation de type.


Deux versions possibles pour la correction.

In [13]:
def notes(n):
    """
    Calcul de la somme de n notes
    @param n: (int) nombre entier strictement positif de notes
    @return: (float) la somme cumulé des n notes
    """
    assert n > 0 and isinstance(n, int),"Vous devez entrer un entier strictement positif"
    somme = 0
    for i in range(n):
        note = float(input(f"entrer la note {i + 1} : "))
        somme = somme + note
    return somme
In [14]:
# Une version plus compacte. On ne crée pas de variable "note"

def notes_bis(n):
    somme = 0
    for i in range(n):
        somme = somme + float(input(f"entrer la note {i + 1} : "))
    return somme

Exercice 3
Créer une fonction validation qui possède un paramètre : un nombre note.

La précondition : le paramètre note est un entier positif, négatif ou nul.
La postcondition : Votre fonction devra renvoyer True si la note est valide (comprise dans [0;20] et False sinon.
On utilisera les tests if et un and par exemple.

In [15]:
def validation(note):
    """
    Vérifie si une note est dans l'intervalle [0 ; 20]
    @param note: (float) nombre positif
    @return: (bool) True si la note est dans l'intervalle
    
    """
    if 0 <= note <= 20:
        return True
    else:
        return False

Exercice 4
Modifier la fonction notes pour qu'elle redemande une saisie de notes si la précédente n'est pas entre 0 et 20.
Il faudra utiliser une boucle non bornée WHILE et la fonction validation.

In [16]:
def notes_mod(n):
    somme = 0
    for i in range(n):
        note = int(input(f"entrer la note {i + 1} : "))
        while validation(note) != True:
            note = int(input(f"entrer la note {i + 1} : "))
        somme = somme + note
    return somme 

Exercice 5
Même si vos fonctions ne fonctionnent pas, fournir un programme (utilisant ces fonctions) et demandant 5 notes pour en afficher la moyenne à l'écran.

In [17]:
def moyenne_fin():
    return moyenne(5, notes_mod(5)) 
    
 
# Versions générales       
def moyenne_gen(n):
    return moyenne(n, notes_mod(n)) 
In [18]:
moyenne_fin()
entrer la note 1 : 12
entrer la note 2 : 8
entrer la note 3 : -4
entrer la note 3 : 15
entrer la note 4 : 3
entrer la note 5 : 21
entrer la note 5 : 12
Out[18]:
10
In [ ]: