Il vaut mieux découper son algorithme en fonctions où chaque fonction réalise une tâche précise. Ces fonctions pourront être éventuellement réutilisées ensuite dans un autre contexte. Recommencer à coder une solution c'est investir à nouveau du temps de développement, de degogage, de documentation, ... De plus, il est toujours plus compliqué de chercher une erreur d'algorithme dans 200 lignes de code que dans une des 20 fonctions de 10 lignes chacune.
assert condition,"texte d'explication"
Revoir : Fonctions_et_modularisation.ipynb
Avant de commencer à coder assurez vous d'avoir une idée claire de vote algorithme.
Une méthode efficace consiste à :
Ecrire son algorithme sous forme de commentaires
Si certaines parties de l'algorithme ne sont pas encore suffisamment précises, elles pourront être détaillées ensuite dans une fonction spécifique
Lorsque des fonctions ou méthodes sont stables et éprouvées, elles peuvent être placées dans des bibliothèques pour alléger la lecture du code... => Fonctions_et_modularisation.ipynb #Modules
Si on souhaite éviter une situation de plantage lors d'une erreur, il faut gérer les erreurs provoquées lors de l'exécution de la fonction.
Exemple : un système automatisé doit être capable d'indiquer qu'une commande est incorrecte sans pour cela s'arrêter
try :
if not {condition à respecter} :
raise {type d'erreur}()
except {type d'erreur} :
*Gérer la situation avant de sortir de la fonction*
Sources d'informations à lire :
Écrire un programme qui permet :
de demander à l’utilisateur combien de notes il souhaite saisir → [ n ]
de saisir les [ n ] notes comprise entre [ 0 ; 20 ]
d’afficher la note la plus faible et la note la plus élevée
de calculer la moyenne
# Construction du programme à développer à l'aide des commentaires :
# demander à l’utilisateur combien de notes il souhaite saisir → [ n ]
nb_notes = demander_entier("Combien de notes sont à saisir ? ")
# saisir les [ n ] notes comprise entre [ 0 ; 20 ]
notes = [ saisir_note() for i in range(nb_notes)] # Complété en classe
# afficher la note la plus faible et la note la plus élevée
print(f"La note mini est {minimum_table(notes)}")
print(f"La note maxi est {maximum_table(notes)}")
# calculer la moyenne
print(f"La moyenne des notes est {moyenne_table(notes)}")
demander_entier()
:¶def demander_entier_V1(message : str) -> int :
""" ==================================================================================================================
* Description :
Je demande à l'utilisateur un nombre correspondant à la question du message et renvoie le résultat au format entier ;
> Remarque : Ici, pas de gestion de vérification de validité de la saisie utilisateur.
* Exemple :
>>> demander_entier("Combien de notes sont à saisir ? ")
Combien de notes sont à saisir ? 5
5
* Préconditions :
message (str) : question définissant le nombre à saisir ;
* Postconditions :
(int) : la valeur saisie convertie en entier.
==================================================================================================================
"""
# Assertions de vérification des préconditions :
assert type(message) == str , "Le message doit être une chaine de caractères."
# bloc d'instructions :
nombre = int(input(message))
return nombre
help(demander_entier_V1)
nb_notes = demander_entier_V1(10)
nb_notes = demander_entier_V1("Combien de notes sont à saisir ? ") # Tester avec les saisies 5, 5.0, toto
demander_entier()
:¶def demander_entier_V2(message : str) -> int :
""" ==================================================================================================================
* Description :
Je demande à l'utilisateur un nombre correspondant à la question du message et renvoie le résultat au format entier ;
> avec une gestion de vérification de la validité de la saisie utilisateur.
* Exemple :
>>> demander_entier("Combien de notes sont à saisir ? ")
Combien de notes sont à saisir ? 5
5
* Préconditions :
message (str) : question définissant le nombre à saisir ;
* Postconditions :
(int) : la valeur saisie convertie en entier.
==================================================================================================================
"""
# Assertions de vérification des préconditions :
assert type(message) == str , "Le message doit être une chaine de caractères."
# bloc d'instructions :
try :
nombre = int(input(message))
return nombre
except ValueError :
print("La valeur saisie doit être convertible en un nombre entier exprimé en base 10 : \n -> la saisie ne doit pas contenir d'autres caractères que 0, 1, 2, 3, 4, 5, 6, 7, 8, 9")
demander_entier_V2("Combien de notes sont à saisir ? ") # Tester avec les saisies 5, 5.0, toto
def saisir_note() -> float :
""" ==================================================================================================================
A COMPLETER
* Postconditions :
(float) : la valeur saisie convertie en float.
==================================================================================================================
"""
# Instructions A CODER
return note
def minimum_table(valeurs:list) -> float :
""" ==================================================================================================================
A COMPLETER
* Postconditions :
(float) : la valeur mini de la liste d'entrée.
==================================================================================================================
"""
# Instructions A CODER
return mini
def maximum_table(valeurs:list) -> float :
""" ==================================================================================================================
A COMPLETER
* Postconditions :
(float) : la valeur maxi de la liste d'entrée.
==================================================================================================================
"""
# Instructions A CODER
return maxi
def moyenne_table(valeurs:list) -> float :
""" ==================================================================================================================
A COMPLETER
* Postconditions :
(float) : la valeur moyenne de la liste d'entrée.
==================================================================================================================
"""
# Instructions A CODER
return moyenne