Created
March 17, 2024 01:05
-
-
Save twittobal/df526983cf9a0167c625365cc41b856d to your computer and use it in GitHub Desktop.
Máquina de café en Python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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