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 |
---|---|
| Balance: 700 |
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB