Comptes bancaires

Imaginez que vous êtes un ingénieur logiciel dans une banque de premier plan. La banque cherche à améliorer son système backend, et votre mission est de concevoir et d'implémenter de nouvelles classes pour représenter différents types de comptes bancaires.
La banque propose deux types de comptes : courant et épargne. Les deux permettent aux clients de déposer et de retirer de l'argent, mais chacun a ses propres caractéristiques. Les comptes courants ont une limite de découvert, ce qui autorise les clients à retirer de l'argent au-delà de leur solde actuel jusqu'à cette limite. Les comptes d'épargne génèrent des intérêts basés sur un rendement annuel en pourcentage.
Votre tâche est de créer trois classes Python : BankAccount, CheckingAccount et SavingsAccount. Toutes sont initialisées avec un montant de départ balance.
  1. La classe BankAccount doit avoir deux méthodes : deposit et withdraw. La méthode deposit doit augmenter le solde du montant du dépôt. La méthode withdraw doit diminuer le solde du montant du retrait. Les deux doivent afficher le solde final après l'opération au format Balance: <X>. S'il n'y a pas suffisamment de fonds, le programme doit afficher Insufficient funds..
  1. La classe CheckingAccount doit hériter de BankAccount et ajouter un attribut supplémentaire : overdraft_limit. La méthode withdraw dans CheckingAccount doit être redéfinie pour permettre aux clients de retirer de l'argent au-delà de leur solde actuel jusqu'à la limite de découvert. En cas de dépassement de la limite de découvert, le programme doit afficher Withdrawal exceeds overdraft limit..
  1. La classe SavingsAccount doit également hériter de BankAccount. Elle doit ajouter un attribut d'initialisation supplémentaire : annual_percentage_yield et une méthode calculate_returns qui calcule les rendements de l'épargne en fonction du annual_percentage_yield. La méthode calculate_returns doit afficher les rendements au format Returns: X.
Le solde de n'importe quel compte ne doit jamais devenir négatif (sauf pour le CheckingAccount où il peut atteindre la limite de découvert négative).
Entrée
Sortie
check = CheckingAccount(500, 100); check.deposit(200); check.withdraw(800); saving = SavingsAccount(500, 0.05); saving.calculate_returns()
Balance: 700 Balance: -100 Returns: 25
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue