Conti Bancari
Immagina di essere un ingegnere del software in una banca di alto livello. La banca sta lavorando per migliorare il proprio sistema backend, e il tuo compito è progettare e implementare nuove classi per rappresentare diversi tipi di conti bancari.
La banca offre due tipi di conti: conto corrente e conto di risparmio. Entrambi i tipi permettono ai clienti di depositare e prelevare denaro, ma ciascuno ha le sue peculiarità. I conti correnti hanno un limite di scoperto, che consente ai clienti di prelevare denaro oltre il loro saldo attuale fino al limite di scoperto. I conti di risparmio maturano interessi basati su un rendimento percentuale annuo.
Il tuo compito è creare tre classi Python:
BankAccount
, CheckingAccount
e SavingsAccount
. Tutte vengono inizializzate con un importo iniziale di balance
.- La classe
BankAccount
deve avere due metodi:deposit
ewithdraw
. Il metododeposit
dovrebbe incrementare il saldo dell'importo depositato. Il metodowithdraw
dovrebbe diminuire il saldo dell'importo prelevato. Entrambi dovrebbero stampare il saldo finale dopo l'operazione nel formatoBalance: <X>
. Se i fondi non sono sufficienti, il programma dovrebbe stampareInsufficient funds.
.
- La classe
CheckingAccount
dovrebbe ereditare daBankAccount
e aggiungere un attributo aggiuntivo:overdraft_limit
. Il metodowithdraw
inCheckingAccount
dovrebbe essere sovrascritto per consentire ai clienti di prelevare denaro oltre il loro saldo attuale fino al limite di scoperto. In caso di superamento del limite di scoperto, il programma dovrebbe stampareWithdrawal exceeds overdraft limit.
.
- La classe
SavingsAccount
dovrebbe anch'essa ereditare daBankAccount
. Dovrebbe aggiungere un attributo di inizializzazione aggiuntivo:annual_percentage_yield
, e includere un metodocalculate_returns
che calcola i rendimenti del denaro risparmiato basandosi sulannual_percentage_yield
. Il metodocalculate_returns
dovrebbe stampare i rendimenti nel formatoReturns: X
.
Il saldo in qualsiasi conto non dovrebbe mai diventare negativo (eccetto per
CheckingAccount
, dove può arrivare fino al limite di scoperto negativo).Input | Output |
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