Банковские счета
Представьте, что вы являетесь разработчиком программного обеспечения в одном из ведущих банков. Банк работает над улучшением своей бэкенд-системы, и ваша задача — разработать и реализовать новые классы для представления различных типов банковских счетов.
Банк предлагает два типа счетов: текущие и сберегательные. Оба типа счетов позволяют клиентам вносить и снимать деньги, но каждый имеет свои особенности. Текущие счета имеют лимит овердрафта, который позволяет клиентам снимать деньги сверх текущего баланса до установленного лимита. Сберегательные счета приносят проценты на основе годовой процентной доходности.
Ваша задача — создать три класса на Python: BankAccount, CheckingAccount и SavingsAccount. Все они инициализируются с начальной суммой balance.
Класс
BankAccountдолжен иметь два метода:depositиwithdraw. Методdepositувеличивает баланс на сумму депозита. Методwithdrawуменьшает баланс на сумму снятия. Оба метода должны выводить конечный баланс после операции в форматеBalance: <X>. Если средств недостаточно, программа должна вывестиInsufficient funds..Класс
CheckingAccountдолжен наследоватьBankAccountи добавлять дополнительный атрибут:overdraft_limit. МетодwithdrawвCheckingAccountдолжен быть переопределён, чтобы позволить клиентам снимать деньги сверх текущего баланса до лимита овердрафта. В случае превышения лимита овердрафта программа должна вывестиWithdrawal exceeds overdraft limit..Класс
SavingsAccountтакже должен наследоватьBankAccount. Он должен добавлять дополнительный атрибут при инициализации:annual_percentage_yield, и иметь методcalculate_returns, который рассчитывает доходность сбережений на основеannual_percentage_yield. Методcalculate_returnsдолжен выводить доход в форматеReturns: X.
Баланс на любом счёте никогда не должен становиться отрицательным (за исключением CheckingAccount, где он может быть отрицательным до лимита овердрафта).
Input | Output |
|---|---|
| Balance: 700 |
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB