Définir une fonction de traitement
Objectif : Regrouper dans une fonction les instructions qui affichent une dépense.
Votre script sait déjà parcourir des dépenses et afficher une ligne pour chacune. Mais si ces instructions doivent être réutilisées, les recopier à plusieurs endroits rend le fichier plus difficile à corriger. Vous allez les regrouper dans une fonction, puis appeler celle-ci pour afficher la liste.
Regrouper les instructions d’affichage
Une fonction est un bloc d’instructions nommé. En Python, vous la définissez avec def, suivi du nom, de parenthèses et de deux-points. Les instructions qui lui appartiennent sont indentées. Dans cette leçon, la fonction ne reçoit pas encore de données : elle parcourt la liste existante et affiche chacune de ses dépenses.
Vous appelez ensuite la fonction en écrivant son nom suivi de parenthèses. La définition seule ne lance pas son contenu : c’est l’appel qui déclenche le parcours et les affichages. Le code ci-dessous est un fichier complet pour suivi_depenses.py ; il conserve une liste de dépenses structurées, la parcourt et affiche son récapitulatif.
print("Suivi de dépenses")
print("Saisir, classer et récapituler ses dépenses.")
# Exemple de montant et de catégorie
montant = 12.50
categorie = "Transport"
print(f"Exemple : {montant:.2f} € en {categorie}")
# Calculs et liste de montants
montants = [12.50, 8.90, 24.00]
total = sum(montants)
print(f"Total des exemples : {total:.2f} €")
print(f"Nombre de montants : {len(montants)}")
# Dépenses structurées pour le récapitulatif
depenses = [
{"montant": 12.50, "categorie": "Transport", "description": "Ticket de bus"},
{"montant": 8.90, "categorie": "Repas", "description": "Déjeuner"},
{"montant": 24.00, "categorie": "Courses", "description": "Marché"},
]
# Exemple de comparaison et de classement
seuil = 20.00
if depenses[0]["montant"] > seuil:
print("La première dépense dépasse le seuil.")
elif depenses[0]["montant"] == seuil:
print("La première dépense atteint le seuil.")
else:
print("La première dépense reste sous le seuil.")
# La boucle simulée s’arrête à la commande prévue.
commandes = [depenses[0], depenses[1], "arreter", depenses[2]]
index_commande = 0
while index_commande < len(commandes):
commande = commandes[index_commande]
index_commande += 1
if commande == "arreter":
break
print(f"Commande traitée : {commande['description']}")
def afficher_depenses():
for depense in depenses:
print(
f"{depense['description']} — {depense['categorie']} : "
f"{depense['montant']:.2f} €"
)
afficher_depenses()Suivi de dépenses
Saisir, classer et récapituler ses dépenses.
Exemple : 12.50 € en Transport
Total des exemples : 45.40 €
Nombre de montants : 3
La première dépense reste sous le seuil.
Commande traitée : Ticket de bus
Commande traitée : Déjeuner
Ticket de bus — Transport : 12.50 €
Déjeuner — Repas : 8.90 €
Marché — Courses : 24.00 €La fonction afficher_depenses contient seulement le parcours et le formatage des lignes. Lorsqu’elle est appelée, les trois dictionnaires de la liste sont traités l’un après l’autre. La boucle simulée reste distincte : elle montre les commandes parcourues jusqu’à « arreter », tandis que la fonction affiche ensuite l’ensemble de la liste pour le récapitulatif.
La définition est placée après les données qu’elle utilise et avant l’appel. Les parenthèses vides indiquent ici qu’aucune donnée n’est transmise à la fonction ; la manière de lui transmettre des données sera étudiée dans la leçon suivante. Vous pouvez maintenant déplacer l’appel ou l’ajouter à un autre endroit du script sans recopier les instructions de parcours.
À retenir
- Définissez une fonction avec def, un nom, des parenthèses et deux-points.
- Indentez les instructions qui composent son contenu.
- Appelez-la avec son nom et des parenthèses pour exécuter son contenu.
- Regroupez une tâche identifiable dans une fonction de 20 lignes maximum.
Dans la prochaine leçon, vous apprendrez à transmettre une dépense à une fonction au moyen de paramètres.