Skip to content

Instantly share code, notes, and snippets.

@variux
Created October 29, 2018 03:07
Show Gist options
  • Save variux/e8fabc70926bdd5599b78083fefa7011 to your computer and use it in GitHub Desktop.
Save variux/e8fabc70926bdd5599b78083fefa7011 to your computer and use it in GitHub Desktop.
Proyecto de principios de informatica Luis Ruby Indy R
# coding: utf-8
# In[ ]:
# Proyecto 1
# FUNCION PRINCIPAL (CAJERO)
def atm(): # Esquema de la primera parte
# 1 - Bienvenida
print()
print("Bienvenido al cajero automático de CIE")
print()
estado = False
# 2 - Estado de caja (revisar)
print("Estado actual de la caja: ", cajaAbierta(estado))
print("Ingrese 'A' para abrir la caja: ")
est = input()
while est != "a" and est != "A":
est = input("Valor no válido. Ingrese 'A' para abrir la caja: ")
## se abre la caja con un clave especial ( mismo código de segunda parte)
# print ("Estado de caja: ", "abierto")
#if est == 'a' or est == 'A':
# clave(est)
#else:
# print ("No es posible abrir la caja")
#
# Ingreso billetes
print("Favor ingresar la cantidad de billetes por denominación (colones): ")
a = int(input("1000: "))
b = int(input("2000: "))
c = int(input("5000: "))
d = int(input("10000: "))
e = int(input("20000: "))
totalCaja = a+b+c+d+e
print(totalCaja)
estado = True
print ("Estado de caja: ",cajaAbierta(estado))
veces= 0
while estado and veces<3:
x = int(input("Ingrese la cantidad en colones a solicitar: "))
veces = veces +1
estado= False
return ("Ultima transacción: ", x) ## Esto es solo para el final, para saber que si es posible ingresar términos
# ----------------------FUNCIONES----------------------------------
# ESTADO DE CAJA: Se pregunta si la caja está o no abierta
def cajaAbierta (estado):
if estado == True:
return "Caja abierta"
else:
return "Caja cerrada"
# Clave Se utiliza 3 veces // preguntar, porqué no se reevalua clave
# Usuario
# SOLICITUD DE DINERO:
#def transaccion (cantidad):
# 1 Ingresar un monto (cantidad) el cual se va a tramitar (esto en atm())
# 1.1 Verificar que sea un monto válido (numeros%1000 == 0, esto está en la parte siguiente), sino indicar, y + un usuario no atendido
# 2 Evaluar si hay suficiente en la caja para cubrirlo, sino, indicarlo + usuario no atendido
# 3 Evaluar la menor cantidad de billetes necesarios para cubrir monto, si no hay un billete, sustituir con el de denominación más cercana
# 4 Restar al valor random asignado (ponerle nombre) el valor del monto extraído
# 5 preguntar si desea otra transaccion
# 6 preguntar si desea factura final (total extraído)
# LLAMADA DE FUNCIONES
atm()
# In[2]:
import random
def atm():
#Valores de atención
atend = 0
nAtend = 0
estado = True # estado de caja
datos = False
while estado:
print("Bienvenido a servicio del cajero automático")
print(" Indique la acción que desea realizar: ")
print()
print("c = cierre de caja")
print("t = transacción")
print()
solicitud = input()
print()
while solicitud != "t" and solicitud != "T" and solicitud != "c" and solicitud != "C":
solicitud = input("Valor inválido. Ingresar un valor de la lista para continuar:")
if solicitud =="c" or solicitud =="C":
cierre = input("Desea hacer cierre de caja?")
while cierre != "n" and cierre != "N" and cierre != "s" and cierre != "S":
cierre = input("Valor inválido. Desea hacer cierre de caja? 's' o 'n'")
if cierre == "s" or cierre == 'S':
#Llamar a cierre ## con clave?
estado = False
return estado
else:
datos = True
print()
# Aquí se de el registro del usuario para la transacción
while datos:
userN = input("Usuario: ")
while registro(userN) == 0 and userN != userN.lower():
userN=input("No exiten coincidencias, digite su usuario: ")
clave = int(input("Contraseña: "))
verifica_acceso = acceso(clave,registro(userN))
print(verifica_acceso)
retiro = False
if verifica_acceso == True:
print("El saldo de su cuenta es de:" + str(random.randrange(1000,10000000,1)) + "colones")
retiro = True
else:
datos = False
return datos
while retiro:
x = int(input("x: "))
x,atend,nAtend = transaccion(x, atend, nAtend)
retiro = False # Esto es para evaluar
# Para luego de cierre de caja
print("Usuarios atendidos: ", atend)
print("Usuarios no atendidos: ",nAtend)
## ----------------------- Funciones ------------------------- ##
## define la contraseña segun el usuario aceptado
def registro(login):
pswd = 0
for i in range(len(login)):
if login[i].isupper() or login[i] == " ":
print ("Usuario no válido, inténtelo de nuevo")
return(0)
else:
pswd = pswd + ord(login[i])
return(pswd)
## define si la contraseña es correcta
def acceso(contrasena,pswd):
clave = int(contrasena)
intento=0
while clave != pswd:
print("login incorrecto. Tiene",2-intento,"restantes")
clave = int(input("Ingrese su contraseña nuevamente:"))
if clave == pswd and intento >=2:
print(" > Acceso Habilitado < ")
return True
elif clave != pswd and intento>=2:
print(">Acceso Denegado<")
return False
intento = intento + 1
if clave == pswd:
print(" > Acceso Habilitado <")
return True
## definir si el valor ingresado es posible de tramitar
def transaccion(x, atend, nAtend):
if x >= 1000:
if x//1000 and x%1000 == 0:
print("Dividido entre mil cierto")
return(x//1000,atend+1,nAtend)
else:
return ("no es posible",atend,nAtend+1)
else:
return ("No es posible generar transacción",atend,nAtend+1)
atm()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment