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.
  1. La classe BankAccount deve avere due metodi: deposit e withdraw. Il metodo deposit dovrebbe incrementare il saldo dell'importo depositato. Il metodo withdraw dovrebbe diminuire il saldo dell'importo prelevato. Entrambi dovrebbero stampare il saldo finale dopo l'operazione nel formato Balance: <X>. Se i fondi non sono sufficienti, il programma dovrebbe stampare Insufficient funds..
  1. La classe CheckingAccount dovrebbe ereditare da BankAccount e aggiungere un attributo aggiuntivo: overdraft_limit. Il metodo withdraw in CheckingAccount 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 stampare Withdrawal exceeds overdraft limit..
  1. La classe SavingsAccount dovrebbe anch'essa ereditare da BankAccount. Dovrebbe aggiungere un attributo di inizializzazione aggiuntivo: annual_percentage_yield, e includere un metodo calculate_returns che calcola i rendimenti del denaro risparmiato basandosi sul annual_percentage_yield. Il metodo calculate_returns dovrebbe stampare i rendimenti nel formato Returns: 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

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