PaliSkill
Python intermédiaire

Leçon 10 / 10 — Chapitre 10: Mise en pratique : suivi de dépenses

Cas pratique : un mini-tableau de bord de dépenses

Cette dernière leçon du module assemble l'ensemble des fonctions du chapitre en un petit tableau de bord complet.

import json
import os.path
from datetime import date

class BudgetDepasseError(Exception):
    pass

def charger_depenses(chemin="depenses.json"):
    if not os.path.exists(chemin):
        return []
    with open(chemin) as fichier:
        return json.load(fichier)

def ajouter_depense(depenses, categorie, montant):
    if montant <= 0:
        raise ValueError("Le montant doit etre positif")
    depenses.append({"date": str(date.today()), "categorie": categorie, "montant": montant})
    return depenses

def sauvegarder_depenses(depenses, chemin="depenses.json"):
    with open(chemin, "w") as fichier:
        json.dump(depenses, fichier)

def verifier_budget(depenses, budget):
    total = sum(d["montant"] for d in depenses)
    if total > budget:
        raise BudgetDepasseError(f"Budget depasse de {total - budget} $")
    return budget - total

depenses = charger_depenses()
ajouter_depense(depenses, "loisirs", 20)
sauvegarder_depenses(depenses)

try:
    restant = verifier_budget(depenses, 100)
    print(f"Budget restant : {restant} $")
except BudgetDepasseError as e:
    print("Alerte :", e)

for categorie, total in sorted(
    {d["categorie"]: sum(x["montant"] for x in depenses if x["categorie"] == d["categorie"]) for d in depenses}.items(),
    key=lambda item: item[1], reverse=True
):
    print(f"{categorie.capitalize():<15}{total:>7.2f} $")

Ce que fait chaque partie :

  • Le programme charge les dépenses existantes, en ajoute une nouvelle avec la date du jour, puis sauvegarde immédiatement — le cycle complet vu à la leçon précédente.
  • verifier_budget compare le total au budget fixé et lève BudgetDepasseError en cas de dépassement, interceptée par try/except.
  • La dernière boucle combine une compréhension de dictionnaire (vue au troisième chapitre) pour calculer les totaux par catégorie, puis un tri décroissant sur ses paires .items() — l'ensemble des notions de tri et de compréhension de ce module, réunies en une seule expression.

Ce module a parcouru les dictionnaires, les fonctions avancées, les compréhensions et le tri, les fichiers et le JSON, la gestion des erreurs, le formatage de chaînes, les modules et la portée — puis les a combinés dans trois mini-programmes complets. La suite logique, pour aller plus loin, est Python Avancé.

À vous de jouer : relancez ce programme plusieurs fois de suite, et vérifiez que le budget restant affiché diminue à chaque nouvelle dépense ajoutée et sauvegardée.

🔒

Continuez ce module

Débloquez les leçons restantes ainsi que la certification finale.

2 500 XOF / 3,81 € / 4,15 $

Débloquez les 85 leçons restantes de ce module

Votre paiement est vérifié avant l'activation de l'accès