Écrire un script Python qui respecte la spécification suivante :
Saisie | Des notes (nombres entre 0 et 20) saisies au clavier |
---|---|
Affichage | La moyenne des notes entrées |
Dans ce programme, on pourra considèrer que l'utilisateur ne fait pas d'erreur de saisie, c'est-à-dire qu'il saisit effectivement des valeurs comprises entre 0 et 20.
- Une solution
- Avec contrôle des saisies
'\n'
signifie newline. Il est utilisé ci-dessous
pour laisser une ligne vide. On pourrait aussi utiliser l'instruction
print()
seule pour obtenir le même effet.
print("Saisir les notes dont la moyenne doit être calculée.")
print("Saisir -1 pour terminer.\n")
# variable enregistrant les différents nombres saisis au clavier :
saisie = 0
# compteur du nombre de valeurs numériques saisies :
numero = 0
# variable sommmant les valeurs saisies :
somme = 0
while saisie != -1 :
# nouvelle entrée-clavier :
saisie = float(input("Saisir la note numéro {} : ".format(numero+1)))
if saisie != -1 : # si cette saisie est distincte de -1,
numero += 1 # numero est incrémenté
somme += saisie # et la nouvelle note est ajoutée à somme
moyenne = somme/numero
print("\nLa moyenne des notes saisies au clavier est égale à {}.".format(moyenne))
On contrôle ici que l'utilisateur entre bien des valeurs numériques comprises entre 0 et 20.
def est_note(x) :
return 0 <= x <= 20
def est_nombre(x) :
try:
float(x)
return True
except ValueError:
return False
def saisir(numero_note):
saisie = input("Saisir la note numéro {} : ".format(numero_note))
while not est_nombre(saisie) :
saisie = input("Saisir la note numéro {} : ".format(numero_note))
return float(saisie)
print("Saisir les notes dont la moyenne doit être calculée.")
print("Saisir -1 pour terminer.\n")
# variable enregistrant les différents nombres saisis au clavier :
saisie = 0
# compteur du nombre de valeurs numériques saisies :
numero = 0
# variable sommmant les valeurs saisies :
somme = 0
while saisie != -1 :
# nouvelle entrée-clavier :
saisie = saisir(numero+1)
if est_note(saisie) and saisie != -1 : # si cette saisie est distincte de -1 et est bien entre 0 et 20,
numero += 1 # numero est incrémenté
somme += saisie # et la nouvelle note est ajoutée à somme
moyenne = somme/numero
print("\nLa moyenne des notes saisies au clavier est égale à {}.".format(moyenne))
Une variante :
def est_note(x) :
return 0 <= x <= 20
def est_nombre(x) :
try:
float(x)
return True
except ValueError:
return False
def saisir(numero_note):
saisie = input("Saisir la note numéro {} : ".format(numero_note))
while not est_nombre(saisie) :
saisie = input("Saisir la note numéro {} : ".format(numero_note))
return float(saisie)
print("Saisir les notes dont la moyenne doit être calculée.")
print("Saisir -1 pour terminer.\n")
# variable enregistrant les différents nombres saisis au clavier :
saisie = 0
# compteur du nombre de valeurs numériques saisies :
numero = 0
# variable sommmant les valeurs saisies :
somme = 0
while "L'utilisateur entre une nouvelle note" : # boucle infinie
saisie = saisir(numero+1) # nouvelle saisie-clavier
if saisie == -1 :
break # on sort de la boucle avec la saisie -1
elif est_note(saisie) : # si la saisie est une note
numero += 1 # numero est incrémenté
somme += saisie # et la nouvelle note est ajoutée à somme
moyenne = somme/numero
print("\nLa moyenne des notes saisies au clavier est égale à {}.".format(moyenne))
Remarque
En classes de lycée, Lorsque les contraintes sont spécifiées dans le cahier des charges (nombres entre 0 et 20), on pourra considérer que l'utilisateur est intelligent et qu'il respecte le cahier des charges lors de l'appel à la fonction correspondante.