Skip to content

Instantly share code, notes, and snippets.

@twittobal
Created March 17, 2024 01:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save twittobal/df526983cf9a0167c625365cc41b856d to your computer and use it in GitHub Desktop.
Save twittobal/df526983cf9a0167c625365cc41b856d to your computer and use it in GitHub Desktop.
Máquina de café en Python
import time
import os
class MaquinaDeCafe:
#Diccionario con los tipos de café disponible
cafes = {
0: {'nombre': 'Café Capuccino', 'precio': 1000},
1: {'nombre': 'Café Expresso', 'precio': 2000}
}
valores = [1000, 2000]; #Valores de los café
seleccion = 0; #Café seleccionado
dinero = 0; #Dinero ingresado
capuccinosVendidos = 0; #Contador de capuccinos vendidos
expressosVendidos = 0; #Contador de expressos vendidos
#Método que permite seleccionar café
def seleccionarCafe(self):
os.system('clear') #Limpiar pantalla
#El usuario ingresa su opción:
#1 = Café capuccino
#2 = Café expresso
self.seleccion = int(input('Seleccione café:\n'+
'1.- Café Capuccino $1000\n'+
'2.- Café Expresso $2000\n\n'+
'Selección: '))
os.system('clear') #Limpiar pantalla
print('Ha seleccionado %s.\n' % self.cafes[self.seleccion-1]['nombre']) #Se muestra en pantalla el café seleccionado
#Se invoca el método para el pago del café
self.pagar()
#Método para el pago del café
def pagar(self):
#El usuario ingresa el efectivo. Si elige el café de 2.000 e ingresa 1.000, volverá a solicitarle dinero
dineroIngresado = int(input('Ingrese efectivo:\n'+
'1.- $1.000\n'+
'2.- $2.000\n\n'+
'Selección: '))
self.dinero += self.valores[dineroIngresado -1] #Sumo el dinero ingresado al dinero total
os.system('clear') #Limpiar pantalla
#Evalúo si el dinero total ingresado es suficiente. Si no es, pido que ingrese mas
if(self.dinero < self.cafes[self.seleccion-1]['precio']):
print('\nCrédito: $%s\n' % self.dinero)
self.pagar()
#De lo contrario, preparo el café
else:
print('\nPreparando su café. Espere unos minutos...\n')
#Invoco méodo para preparar el café
self.preparar()
#Método para preparar el café
def preparar(self):
time.sleep(5); #Pausa de 5 segundos para simular la preparación del café
# Evaluo si corresponde vuelto o no. Si corresponde, doy vuelto2
if(self.dinero > self.cafes[self.seleccion-1]['precio']):
vuelto = self.dinero - self.cafes[self.seleccion-1]['precio']
print('Retire su café y $%s de vuelto.\n' %vuelto)
#Si no hay vuelto, no devuelvo nada.
else:
print('Retire su café.\n')
#Sumo al contador el café vendido
if(self.seleccion == 1):
self.capuccinosVendidos += 1
else:
self.expressosVendidos += 1
#Pregunto si desea otro café
otraOperacion = input('Desea comprar otro café? s/n:\n\nSelección: ')
#si desea otro café, Vuelvo al inicio, al método de selección
if(otraOperacion == 's'):
print('\n')
self.seleccion = 0
self.dinero = 0
os.system('clear') #Limpiar pantalla
self.seleccionarCafe()
#Si no quiere más café, agradezco y muestro los contadores de café vendido
else:
os.system('clear') #Limpiar pantalla
print('\n¡Muchas gracias por su compra!\n')
print('Cantidad de cafés vendidos: \n')
print('Capuccinos: %s\n' %self.capuccinosVendidos)
print('Expressos: %s\n' %self.expressosVendidos )
print('Total de café vendidos: %d' %(self.expressosVendidos +self.capuccinosVendidos))
###############################
maquinaDeCafe = MaquinaDeCafe() #Creo una instancia del objeto MaquinaDeCafe
maquinaDeCafe.seleccionarCafe() #Comienzo el flujo de compra
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment