銀行口座
あなたは一流銀行のソフトウェアエンジニアだと想像してください。銀行はバックエンドシステムの改善に取り組んでおり、あなたの役割はさまざまな種類の銀行口座を表現する新しいクラスを設計・実装することです。
銀行は当座預金口座と普通預金口座の2種類の口座を提供しています。どちらの口座も顧客が預金と引き出しを行うことができますが、それぞれ固有の特徴があります。当座預金口座には当座貸越限度額が設定されており、顧客は現在の残高を超えてその限度額まで引き出すことが可能です。普通預金口座は年利に基づいて利息を得ます。
あなたのタスクは、
BankAccount
、CheckingAccount
、SavingsAccount
の3つのPythonクラスを作成することです。これらすべては初期の balance
(残高)で初期化されます。BankAccount
クラスは2つのメソッド、deposit
とwithdraw
を持つべきです。deposit
メソッドは預金額だけ残高を増やします。withdraw
メソッドは引き出し額だけ残高を減らします。どちらのメソッドも、操作後の最終残高をBalance: <X>
の形式で出力します。もし十分な資金がない場合、プログラムはInsufficient funds.
と出力します。
CheckingAccount
クラスはBankAccount
を継承し、追加の属性としてoverdraft_limit
(当座貸越限度額)を加えます。CheckingAccount
のwithdraw
メソッドはオーバーライドされ、顧客が現在の残高を超えて当座貸越限度額まで引き出すことを可能にします。当座貸越限度額を超えた場合、プログラムはWithdrawal exceeds overdraft limit.
と出力します。
SavingsAccount
クラスもBankAccount
を継承します。追加の初期化属性としてannual_percentage_yield
(年利)を加え、annual_percentage_yield
に基づいて預金の利息を計算するcalculate_returns
メソッドを追加します。calculate_returns
メソッドは利息をReturns: X
の形式で出力します。
どの口座の残高も決して負の値になってはいけません(
CheckingAccount
は当座貸越限度額まで負になることができます)。入力 | 出力 |
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