Cuentas Bancarias
Imagina que eres un ingeniero de software en un banco de primer nivel. El banco está trabajando para mejorar su sistema backend, y tu tarea es diseñar e implementar nuevas clases para representar diferentes tipos de cuentas bancarias.
El banco ofrece dos tipos de cuentas: corriente y de ahorros. Ambos tipos de cuentas permiten a los clientes depositar y retirar dinero, pero cada una tiene sus propias características. Las cuentas corrientes tienen un límite de sobregiro, que permite a los clientes retirar dinero más allá de su saldo actual hasta ese límite. Las cuentas de ahorros generan intereses basados en un rendimiento porcentual anual.
Tu tarea es crear tres clases en Python:
BankAccount
, CheckingAccount
y SavingsAccount
. Todas se inicializan con un balance
inicial.- La clase
BankAccount
debe tener dos métodos:deposit
ywithdraw
. El métododeposit
debe aumentar el balance por el monto del depósito. El métodowithdraw
debe disminuir el balance por el monto del retiro. Ambos deben imprimir el balance final después de la operación en el formatoBalance: <X>
. Si no hay fondos suficientes, el programa debe imprimirInsufficient funds.
.
- La clase
CheckingAccount
debe heredar deBankAccount
y agregar un atributo adicional:overdraft_limit
. El métodowithdraw
enCheckingAccount
debe ser sobrescrito para permitir que los clientes retiren dinero más allá de su saldo actual hasta el límite de sobregiro. En caso de exceder el límite de sobregiro, el programa debe imprimirWithdrawal exceeds overdraft limit.
.
- La clase
SavingsAccount
también debe heredar deBankAccount
. Debe añadir un atributo adicional en la inicialización:annual_percentage_yield
, y agregar un métodocalculate_returns
que calcule los rendimientos por ahorrar dinero basado en elannual_percentage_yield
. El métodocalculate_returns
debe imprimir los rendimientos en el formatoReturns: X
.
El balance en cualquier cuenta nunca debe ser negativo (excepto en
CheckingAccount
, donde puede llegar hasta el límite negativo del sobregiro).Entrada | Salida |
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