Objetivo
Desarrollar un programa en Python que simule el funcionamiento básico de un cajero automático simplificado, aplicando los contenidos trabajados previamente en PSeInt y llevándolos ahora a código real. El programa considerará dos etapas: inicialización de la información de operación y funcionamiento del cajero.
Contexto del Problema
Paso 1 — Inicializar Información de Operación
Al comenzar el programa, se debe solicitar y guardar la siguiente información:
- RUT del cliente
- Clave numérica de acceso
- Monto inicial de la cuenta
Consideraciones del Paso 1
- El RUT debe guardarse como texto (
str). - La clave puede trabajarse como texto o número, pero debe ser consistente en todo el programa.
- El monto inicial debe guardarse como número entero (
int). - Deben validarse los datos ingresados en la medida de lo posible.
- No se puede continuar al Paso 2 si la información mínima no fue correctamente ingresada.
Paso 2 — Funcionamiento del Cajero
2.1 Autenticación
Antes de mostrar el menú, el sistema debe pedir:
- RUT
- Clave
2.2 Menú de Acciones
Si el usuario se autentica correctamente, el cajero muestra un menú con las siguientes operaciones. El menú se repite mientras el usuario no decida salir.
Consultar Saldo
- Muestra el saldo actual disponible en la cuenta.
Retirar Dinero
- Pide el monto a retirar.
- Monto debe ser mayor que 0.
- Debe existir saldo suficiente.
- Si es válido, se descuenta del saldo.
Depositar Dinero
- Pide el monto a depositar.
- Monto debe ser mayor que 0.
- Si es válido, se suma al saldo actual.
Cambiar Clave
- Solicita la clave antigua.
- La nueva clave no puede quedar vacía.
- La nueva clave debe ser distinta a la anterior.
Transferencia
- Pide RUT de destino y monto.
- RUT de destino no debe estar vacío.
- Monto debe ser mayor que 0.
- Debe existir saldo suficiente.
- Si es válida, se descuenta del saldo.
Salir
- El usuario puede terminar la ejecución desde el menú.
- Se recomienda confirmar con: "¿Está seguro que desea salir?"
Validaciones Mínimas Esperadas
- Autenticación correcta (RUT + clave)
- Opción de menú válida
- Montos positivos en todas las operaciones
- Saldo suficiente en retiros y transferencias
- RUT de destino no vacío en transferencia
- Mensajes claros al usuario cuando ocurra un error
Restricciones de Implementación
Deben usar
No deben usar
Entregable
Cada estudiante debe entregar un único archivo:
- Archivo
.pycon la solución completa. - Código que se ejecute sin errores desde consola.
- Uso correcto de las estructuras vistas en clases.
- Cumplimiento de las restricciones indicadas.
Criterios de Evaluación
| Criterio | Ponderación |
|---|---|
| Cumplimiento general del enunciado | Alto |
| Correcta inicialización de datos (Paso 1) | Medio |
| Autenticación funcional | Medio |
| Funcionamiento correcto del menú y operaciones | Alto |
| Validación de entradas y operaciones | Medio |
| Claridad y orden de los mensajes al usuario | Medio |
| Uso correcto de estructuras y respeto por restricciones | Alto |
Sugerencias de Diseño
- Separar mentalmente el problema en los dos pasos solicitados.
- Usar nombres de variables descriptivos (evitar
x,a, etc.). - Controlar bien la repetición del menú con
while. - Validar cada operación antes de modificar el saldo.
- Cuidar la presentación de los mensajes en pantalla para facilitar la corrección.