Bankkonten
Stellen Sie sich vor, Sie sind Softwareingenieur bei einer erstklassigen Bank. Die Bank arbeitet daran, ihr Backendsystem zu verbessern, und Ihre Aufgabe ist es, neue Klassen zu entwerfen und zu implementieren, die verschiedene Arten von Bankkonten darstellen.
Die Bank bietet zwei Arten von Konten an: Girokonten und Sparkonten. Beide Kontotypen erlauben es Kunden, Geld einzuzahlen und abzuheben. Aber jeder Kontotyp hat seine eigenen Merkmale. Girokonten haben ein Überziehungslimit, das es Kunden ermöglicht, Geld über ihr aktuelles Guthaben hinaus bis zum Überziehungslimit abzuheben. Sparkonten erwirtschaften Zinsen basierend auf einer jährlichen prozentualen Rendite.
Ihre Aufgabe ist es, drei Python-Klassen zu erstellen:
BankAccount
, CheckingAccount
und SavingsAccount
. Alle werden mit einem anfänglichen balance
-Betrag initialisiert.- Die Klasse
BankAccount
sollte zwei Methoden haben:deposit
undwithdraw
. Die Methodedeposit
sollte das Guthaben um den Einzahlungsbetrag erhöhen. Die Methodewithdraw
sollte das Guthaben um den Abhebungsbetrag verringern. Beide sollten das Endguthaben nach der Operation im FormatBalance: <X>
ausgeben. Wenn nicht genügend Mittel vorhanden sind, sollte das ProgrammInsufficient funds.
ausgeben.
- Die Klasse
CheckingAccount
sollte vonBankAccount
erben und ein zusätzliches Attribut hinzufügen:overdraft_limit
. Die Methodewithdraw
inCheckingAccount
sollte überschrieben werden, um Kunden zu erlauben, Geld über ihr aktuelles Guthaben hinaus bis zum Überziehungslimit abzuheben. Im Falle einer Überschreitung des Überziehungslimits sollte das ProgrammWithdrawal exceeds overdraft limit.
ausgeben.
- Die Klasse
SavingsAccount
sollte ebenfalls vonBankAccount
erben. Sie sollte ein zusätzliches Initialisierungsattribut hinzufügen:annual_percentage_yield
, und eine Methodecalculate_returns
, die die Rendite für das Sparen von Geld basierend auf demannual_percentage_yield
berechnet. Die Methodecalculate_returns
sollte die Rendite im FormatReturns: X
ausgeben.
Das Guthaben in jedem Konto sollte niemals negativ werden (außer beim
CheckingAccount
, bei dem es bis zum negativen Überziehungslimit gehen kann).Eingabe | Ausgabe |
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