Compte Bancaire - Python

Énoncé & Solution - Classe CB (Compte Bancaire)

Exercice de POO en Python pour gérer des comptes bancaires : déposer, retirer, afficher le solde.

La classe CB possède les attributs nom et soldinit, et les méthodes deposer, retirer, verifierSolde. Deux instances : c1 et c2. Classe CB __init__(nom, soldinit=0) deposer(montant) retirer(montant) verifierSolde() Attributs : - nom : str - soldinit : int | float Instance c1 CB("bob", 100) Instance c2 CB("joel", 500) instanciation instanciation
 
Python POO Validation d’entrées

? Enoncé

Implémente une classe CB représentant un compte bancaire :

  • Attributs : nom (titulaire) et soldinit (solde courant, 0 par défaut).
  • deposer(montant) : ajoute un montant > 0, sinon affiche une erreur.
  • retirer(montant) : autorisé si 0 < montant ≤ soldinit, sinon erreur.
  • verifierSolde() : affiche le solde actuel lisiblement.

Dans le programme principal, crée deux comptes (bob, joel) et rejoue la séquence d’appels donnée ci-dessous.

? Code de départ (fourni)
# Online Python course PandaCodeur.com

class CB:
    def __init__(self, nom, soldinit=0):
        self.nom = nom
        self.soldinit = soldinit

    def deposer(self, montant):
        if montant > 0:
            self.soldinit += montant
            print(f"{montant} depose et le New solde: {self.soldinit}")
        else:
            print("Le montant doit être positif.")

    def retirer(self, montant):
        if 0 < montant <= self.soldinit:
            self.soldinit -= montant
            print(f"{montant} retiré et New solde: {self.soldinit}")
        else:
            print("Montant invalide // solde insuffisant.")

    def verifierSolde(self):
        print(f"Solde actuel de {self.nom}: {self.soldinit} ")

if __name__ == "__main__":
    c1 = CB("bob", 100)
    c2 = CB("joel", 500)

    c1.verifierSolde()
    c1.deposer(200)
    c1.retirer(150)
    c1.verifierSolde()

    c2.verifierSolde()
    c2.deposer(300)
    c2.retirer(600)
    c2.verifierSolde()

✅ Solution 

1) Validation des règles métier

  • Dépôt : on accepte uniquement les montants strictement positifs (montant > 0). Sinon, on affiche « Le montant doit être positif. »
  • Retrait : on exige 0 < montant ≤ soldinit. En pratique :
    • si montant ≤ 0refus ;
    • si montant > soldinitrefus (solde insuffisant) ;
    • sinon → on débite puis on affiche le nouveau solde.
  • Affichage du solde : format « Solde actuel de <nom>: <solde> ».

2) Trace d’exécution attendue

On suit exactement la séquence d’appels présente dans le bloc __main__.

Étape Action Sortie à l’écran Solde après l’action
1 c1.verifierSolde() Solde actuel de bob: 100 c1 = 100
2 c1.deposer(200) 200 depose et le New solde: 300 c1 = 300
3 c1.retirer(150) 150 retiré et New solde: 150 c1 = 150
4 c1.verifierSolde() Solde actuel de bob: 150 c1 = 150
5 c2.verifierSolde() Solde actuel de joel: 500 c2 = 500
6 c2.deposer(300) 300 depose et le New solde: 800 c2 = 800
7 c2.retirer(600) 600 retiré et New solde: 200 c2 = 200
8 c2.verifierSolde() Solde actuel de joel: 200 c2 = 200
Remarque : le retrait de 600€ sur c2 réussit car le solde de c2 est de 800€ après le dépôt. Le solde final de c2 devient 200€.

3) Pourquoi ces conditions ?

  • Éviter les dépôts nuls/négatifs : ce sont des entrées invalides côté métier.
  • Empêcher les découverts non autorisés : montant > soldinit est refusé.
  • Rendre l’interface verbale claire : chaque opération affiche un message explicite.

4) Code complet de la solution 

class CB:
    def __init__(self, nom, soldinit=0):
        self.nom = nom
        self.soldinit = soldinit

    def deposer(self, montant):
        if montant > 0:
            self.soldinit += montant
            print(f"{montant} depose et le New solde: {self.soldinit}")
        else:
            print("Le montant doit être positif.")

    def retirer(self, montant):
        if 0 < montant <= self.soldinit:
            self.soldinit -= montant
            print(f"{montant} retiré et New solde: {self.soldinit}")
        else:
            print("Montant invalide // solde insuffisant.")

    def verifierSolde(self):
        print(f"Solde actuel de {self.nom}: {self.soldinit} ")

if __name__ == "__main__":
    c1 = CB("bob", 100)
    c2 = CB("joel", 500)

    c1.verifierSolde()
    c1.deposer(200)
    c1.retirer(150)
    c1.verifierSolde()

    c2.verifierSolde()
    c2.deposer(300)
    c2.retirer(600)
    c2.verifierSolde()

Class python

5) Sortie complète attendue (copiable/collable)

Solde actuel de bob: 100
200 depose et le New solde: 300
150 retiré et New solde: 150
Solde actuel de bob: 150
Solde actuel de joel: 500
300 depose et le New solde: 800
600 retiré et New solde: 200
Solde actuel de joel: 200
✨ Bonus (facultatif) : ajouter un virement entre comptes

Ajoute virement(self, autre_cb, montant) qui transfère de l’argent si montant > 0 et si le solde est suffisant.

def virement(self, autre_cb, montant):
    if montant <= 0:
        print("Le montant doit être positif.")
        return
    if montant > self.soldinit:
        print(f"Solde insuffisant sur {self.nom}.")
        return
    self.soldinit -= montant
    autre_cb.soldinit += montant
    print(f"Virement de {montant} de {self.nom} → {autre_cb.nom}. Nouveaux soldes: {self.soldinit} / {autre_cb.soldinit}")
Python pandacodeur 1

Si vous avez trouvé les exercices corrigés en  Python de Mr JoëlYk intéressants et utiles, pourquoi ne pas les partager avec d'autres personnes qui pourraient également en bénéficier ? Partagez ce lien sur les réseaux sociaux ou envoyez-le à vos amis et collègues. Vous pourriez aider quelqu'un à améliorer ses compétences en programmation ou à trouver des solutions à des problèmes complexes. N'oubliez pas que la connaissance doit être partagée pour grandir. Merci pour votre soutien et votre partage !

Contact WhatsApp : +237 652027193 | Réaliser Par Joël_Yk

Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam