from datetime import datetime
# Datos de clientes (con nombre de usuario como clave)
clientes = {
'marcio_guerrero': {'nombre': 'Marcio Guerrero', 'saldo': 1200.10, 'tipo_cliente':
'Normal', 'contrasena': '1234'},
'edu_vidal': {'nombre': 'Edu Vidal', 'saldo': 20500.50, 'tipo_cliente': 'VIP',
'contrasena': 'abcd'},
'javier_leiva': {'nombre': 'Javier_Leiva', 'saldo': 16800.70, 'tipo_cliente': 'Preferente',
'contrasena': '5678'}
def obtener_fecha_hora():
"""Obtiene la fecha y hora actuales."""
ahora = [Link]()
fecha = [Link]("%d/%m/%Y")
hora = [Link]("%H:%M:%S")
return fecha, hora
def mostrar_menu():
"""Muestra el menú principal del cajero automático."""
print("\n--- Bienvenido al Menú del Cajero Nuevo Peru Bank ---")
print("--- Soy tu asistente virtual ---")
print("--- Por favor elige una opción ---")
print("1. Consultar saldo")
print("2. Depositar dinero")
print("3. Retirar dinero")
print("4. Salir")
def imprimir_boucher(operacion, saldo_actual, nombre_cliente):
"""Imprime un boucher con los detalles de la operación."""
fecha, hora = obtener_fecha_hora()
print("\n--- Boucher ---")
print(f"Fecha: {fecha}")
print(f"Hora: {hora}")
print(f"Cliente: {nombre_cliente}")
print(f"Operación: {operacion}")
print(f"Saldo Actual: ${saldo_actual:.2f}")
print("----------------")
def consultar_saldo(cliente):
"""Consulta y muestra el saldo actual del cliente."""
print(f"\nInformación del Cliente:")
print(f"Nombre: {cliente['nombre']}")
print(f"Saldo: ${cliente['saldo']:.2f}")
print(f"Tipo de Cliente: {cliente['tipo_cliente']}")
def depositar_dinero(cliente, monto):
"""Realiza un depósito y muestra el nuevo saldo."""
if monto > 0:
cliente['saldo'] += monto
print(f"Depósito realizado con éxito. Nuevo saldo: ${cliente['saldo']:.2f}")
imprimir_boucher("Depósito", cliente['saldo'], cliente['nombre'])
else:
print("El monto a depositar debe ser mayor a 0.")
def retirar_dinero(cliente, monto):
"""Realiza un retiro y muestra el nuevo saldo."""
if monto > cliente['saldo']:
print("Fondos insuficientes.")
elif monto <= 0:
print("El monto a retirar debe ser mayor a 0.")
else:
cliente['saldo'] -= monto
print(f"Retiro realizado con éxito. Nuevo saldo: ${cliente['saldo']:.2f}")
imprimir_boucher("Retiro", cliente['saldo'], cliente['nombre'])
def main():
"""Función principal para manejar el flujo del cajero automático."""
while True:
nombre_usuario = input("Ingrese su nombre de usuario: ").strip().lower()
contrasena = input("Ingrese su contraseña: ").strip()
# Verificar si el usuario existe y la contraseña es correcta
if nombre_usuario in clientes and clientes[nombre_usuario]['contrasena'] ==
contrasena:
cliente = clientes[nombre_usuario]
while True:
mostrar_menu()
try:
opcion = int(input("Seleccione una opción (1-4): "))
except ValueError:
print("Opción no válida. Por favor, ingrese un número del 1 al 4.")
continue
if opcion == 1:
consultar_saldo(cliente)
elif opcion == 2:
try:
monto = float(input("Ingrese el monto a depositar: "))
depositar_dinero(cliente, monto)
except ValueError:
print("Monto no válido. Por favor, ingrese un número.")
elif opcion == 3:
try:
monto = float(input("Ingrese el monto a retirar: "))
retirar_dinero(cliente, monto)
except ValueError:
print("Monto no válido. Por favor, ingrese un número.")
elif opcion == 4:
print(f"Muchas gracias por tu preferencia {cliente['nombre']}. ¡Hasta
luego!")
print(f"Espero haberte ayudado correctamente. Ten un buen día")
break
else:
print("Opción no válida. Por favor, seleccione una opción del 1 al 4.")
else:
print("Nombre de usuario o contraseña incorrectos.")
# Llamada a la función principal
main()