FPY-1101  ·  Fundamentos de Programación

Cajero Automático
Simplificado en Python

Actividad de programación — aplicación de estructuras básicas

Ingeniería en Informática · Analista en Programación
Python — Consola
Entrega: archivo .py
Trabajo individual

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

Un banco necesita una versión simple de un cajero automático para realizar pruebas iniciales. Antes de usar el cajero se debe registrar la información básica de una cuenta. Luego, el sistema debe permitir la autenticación del usuario y mostrar un menú de acciones bancarias.

Paso 1 — Inicializar Información de Operación

1

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
2.1  Autenticación

Antes de mostrar el menú, el sistema debe pedir:

  • RUT
  • Clave
Si la autenticación falla, el sistema debe informar que los datos son inválidos y ofrecer una alternativa clara: volver a intentar o salir del sistema.
2
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.

OPCIÓN 1
Consultar Saldo
  • Muestra el saldo actual disponible en la cuenta.
OPCIÓN 2
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.
OPCIÓN 3
Depositar Dinero
  • Pide el monto a depositar.
  • Monto debe ser mayor que 0.
  • Si es válido, se suma al saldo actual.
OPCIÓN 4
Cambiar Clave
  • Solicita la clave antigua.
  • La nueva clave no puede quedar vacía.
  • La nueva clave debe ser distinta a la anterior.
OPCIÓN 5
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.
OPCIÓN 6
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
variables input() int() str() if / elif / else while for asignación op. aritméticas op. lógicos op. de comparación
No deben usar
funciones propias listas tuplas diccionarios sets colecciones POO / clases

Entregable

Cada estudiante debe entregar un único archivo:

  • Archivo .py con 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.