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
.- La classe
BankAccount
doit avoir deux méthodes :deposit
etwithdraw
. La méthodedeposit
doit augmenter le solde du montant du dépôt. La méthodewithdraw
doit diminuer le solde du montant du retrait. Les deux doivent afficher le solde final après l'opération au formatBalance: <X>
. S'il n'y a pas suffisamment de fonds, le programme doit afficherInsufficient funds.
.
- La classe
CheckingAccount
doit hériter deBankAccount
et ajouter un attribut supplémentaire :overdraft_limit
. La méthodewithdraw
dansCheckingAccount
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 afficherWithdrawal exceeds overdraft limit.
.
- La classe
SavingsAccount
doit également hériter deBankAccount
. Elle doit ajouter un attribut d'initialisation supplémentaire :annual_percentage_yield
et une méthodecalculate_returns
qui calcule les rendements de l'épargne en fonction duannual_percentage_yield
. La méthodecalculate_returns
doit afficher les rendements au formatReturns: 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