Se trata de un cajero creado en el lenguaje Python, usando programación orientada a objeto. En el código se encontrará la clase cajero, la cual estará conformada por los atributos nombre, identificación, saldo y donaciones; además, en la clase mencionada se encuentran los métodos retirar, carga, donaciones, mos_don, saldo, consignar y proceso.
Al realizar un análisis del código se verá que algunos atributos se encuentran encapsulados, al igual que el método proceso y que el método __init__, constructor de la clase, inicializa los atributo.
El programa tiene un archivo adicional llamado ‘datos002.txt’, en el que se encuentran los valores iniciales y donde se guardan los nuevos valores, después de que los usuarios realizan sus transacciones.
El contenido del archivo ‘datos002.txt’ hace referencia a los números de cuentas, saldo y donaciones, como se muestra a continuación:
85460123 1300000 50000
86456321 1200000 20000
56897001 500000 10000
La aplicación tendrá el nombre de ‘Cajero2020.py’ y podrá probarse en un ID para Python, que permita probar el código que adicionemos.
Por último, recuerde que los dos archivos deberán estar en la misma carpeta.
A continuación, se mostrarán pantallazos de su funcionamiento:

Este reto consiste en completar el código para que el menú del programa funcione. Se deben utilizar listas y métodos de clase, para que el programa calcule y almacene los datos en el archivo auxiliar.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
“””
Created on Sun Oct 25 15:33:26 2020
@author: waldo
“””
“”” Programa que simula un cajero electronico usando Objetos “””
”’Inicio del programa”’
#Inicio de la clase Cajero
class cajero():
def __init__(self):
self.__nombre = “”
self.__identificacion = “”
self.__saldo = 0
self.__donaciones = 0
def retirar(self):
monto = int(input(“Escriba el valor a retirar: \n”))
resp = input(“Está seguro, que desea realizar el retiro (s/n).. \n”)
if resp==’s’:
return self.__proceso(monto,’retiro’)
else:
print(“Ha cancela do la transacción, que tenga buen día.\n”)
def carga(self, identificacion, saldo, donaciones):
self.__saldo = int(saldo)
self.__identificacion = identificacion
self.__donaciones = int(donaciones)
def donaciones(self):
print(“Para realizar su donación, tenga en cuenta que: el mínimo es de 10000 y el máximo de 50000 \n”)
monto = int(input(“Que valor desea donar? \n”))
if monto>=10000 and monto<=50000 and monto<self.__saldo:
opc = input(“Confirma su donación (s/n).. \n”)
if opc==’s’:
return self.__proceso(monto, ‘donacion’)
else:
print(“Proceso cancelado por el usuario.. \n”)
else:
print(“El valor no cumple con las condiciones o usted, no cuenta con saldo suficiente.”)
def mos_don(self):
print(f”Sus donaciones, suman un valor de:{self.__donaciones} \n”)
def consignar(self):
monto = int(input(“Escriba el valor a consignar: \n”))
conf = input(“Esta seguro que desea realizar la consignación (s/n)…”)
if conf==’s’:
p = self.__proceso(monto, ‘consignacion’)
return p
else:
print(“Consignación cancelada por el usuario..\n”)
def saldo(self):
self.__proceso(0,’saldo’)
def __proceso(self, monto, op):
if op==’consignacion’:
self.__saldo += monto
print(f”El valor consignado es de {monto} pesos\n”)
return self.__saldo
if op==’retiro’:
if self.__saldo>=monto:
self.__saldo -= monto
print(f”Su retiro es de {monto} y su nuevo saldo es: {self.__saldo} \n”)
return self.__saldo
else:
print(“No hay saldo suficiente, para realizar su transacción \n”)
return self.__saldo
if op==’saldo’:
print(f”En la actualidad, su saldo es de: {self.__saldo} \n”)
if op==’donacion’:
self.__saldo -= monto
self.__donaciones += monto
print(“Su donación, fue realizada con exito.. \n”)
return self.__donaciones
”’Fin de la clase Cajero”’
clientes = [] #Inicialización de variable tipo lista
with open(‘datos002.txt’, ‘r’) as f: #Apertura de archivo datos002.txt
clientes = [linea.split() for linea in f]#Conversión de lineas de texto en tokens que se van adicionando a la lista clientes
print(clientes)#Impresión de los datos de la lista Clientes
cjro = cajero() #Definicion de variable objeto – Instancia de la clase cajero
cjro.saldo() #Llamada al método saldo de el objeto cjro
sw2 = 0
#Inicio del ciclo de lectura de datos
while sw2==0:
usuario = input(“Ingrese la identificación de usuario:”)
contador = 0
for i in clientes:
if i[0]==usuario:
sw=0
cjro.carga(i[0], i[1], i[2])
break
contador += 1
while sw==0:
print(“1. Para realizar una consignación”)
print(“2. Para realizar un retiro”)
print(“3. Para mirar el saldo”)
print(“4. Para realizar donación”)
print(“5. Para mostrar donación”)
print(“6. Para Salir..”)
print(“Digite una Opción:”, end=””)
opc = int(input())
‘’’
En este espacio se deberán colocar las instrucciones que permitan realizar lo que está descrito en el menú del programa, y una vez el programa termine, los datos que se guardan en el archivo deberán tener coherencia con las transacciones realizadas.
‘’’
ops = input(“Usted desea trabajar otro usuario? (s/n)…”)
if ops==’s’:
sw2 = 0
else:
sw2 = 1
#Escritura en archivo datos002.txt
f = open(‘datos002.txt’, ‘w’)
for i in clientes:
cad = str(i[0]) + ‘ ‘ + str(i[1]) + ‘ ‘ + str(i[2])
f.write(cad + “\n”)
f.close()
”’Fin del programa”’