
Recetas Python
Publicado por Marco (10 intervenciones) el 02/05/2022 16:31:19
Por favor su ayuda con el siguiente ejercicio.
Existen dos archivos con información para un restaurant: ingredientes.txt
y recetas.csv. En el primero se guarda la información de los ingredientes
que se usan en las distintas recetas junto a su stock. El segundo archivo
guarda la información de los ingredientes que van en cada una de las
recetas.
A continuación, un ejemplo de cada uno de estos dos archivos:
ingredientes.txt
Tomate 5
Lechuga 2
Hamburguesa 10
Carne 1
Espárragos 8
Pan 10
Papa 5
Cebolla 12
recetas.csv
HamburguesaCasera,Hamburguesa,Tomate,Pan
PastelDeCarne,Carne,Papa,Cebolla
EnsaladaEspecial,Lechuga,Espárragos,Tomate
Para simplificar el problema puedes suponer que los datos en el archivo siempre vienen
correctos en la forma indicada. Es decir en el archivo de ingredientes el nombre y el stock
separados por espacios y en el archivo de recetas el nombre de la receta y luego todos los
ingredientes separados por comas.
Recetas
Tu misión es escribir un programa capaz de responder a las instrucciones del ususario en la siguiente forma. Hay tres comandos: PREPARAR, REPONER, y STOP. Cualquier otra palabra inicial que no sea una de ellas se ignora.
PREPARAR viene seguida del nombre de una de las recetas del archivo.
REPONER viene seguida de una lista de ingredientes separados por espacios. Pueden haber ingredientes que aparezcan más de una vez
STOP no es acompañada por nada.
Si la orden es PREPARAR debe procederse a verificar si la receta es válida y si tenemos los ingredientes. En ese caso se reduce en una unidad cada uno de los ingredientes que la receta indicada incluye. Si la receta no existe en el archivo de recetas (por ejemplo, Omelette) se imprime el siguiente mensaje:
*** Lo sentimos pero no preparamos Omelette ***
Si la receta es válida (por ejemplo, PastelDeCarne), pero hay algún ingrediente del cual no tenemos stock (por ejemplo stock = 0 para Carne) se imprime el siguiente mensaje:
*** No se puede hacer PastelDeCarne porque falta Carne ***
Si la orden es REPONER debe procederse a aumentar en una unidad el stock de cada uno de los ingredientes indicados (si aparece varias veces se agrega por cada aparición. Si algún producto de los ingresados no existe en el archivo simplemente se ignora.
Cada vez que se pide PREPARAR o REPONER, luego de realizar la acción debe desplegarse una lista de los ingredientes con sus respectivos stocks actualizados en la forma:
Stock actual de ingredientes disponibles
Tomate 5
Lechuga 2
Hamburguesa 10
Carne 2
Espárragos 8
Pan 11
Papa 4
Cebolla 11
Si la orden es STOP el programa se detiene
Mientras no se ingrese la orden de STOP el programa vuelve a pedir una nueva orden del usuario.
Existen dos archivos con información para un restaurant: ingredientes.txt
y recetas.csv. En el primero se guarda la información de los ingredientes
que se usan en las distintas recetas junto a su stock. El segundo archivo
guarda la información de los ingredientes que van en cada una de las
recetas.
A continuación, un ejemplo de cada uno de estos dos archivos:
ingredientes.txt
Tomate 5
Lechuga 2
Hamburguesa 10
Carne 1
Espárragos 8
Pan 10
Papa 5
Cebolla 12
recetas.csv
HamburguesaCasera,Hamburguesa,Tomate,Pan
PastelDeCarne,Carne,Papa,Cebolla
EnsaladaEspecial,Lechuga,Espárragos,Tomate
Para simplificar el problema puedes suponer que los datos en el archivo siempre vienen
correctos en la forma indicada. Es decir en el archivo de ingredientes el nombre y el stock
separados por espacios y en el archivo de recetas el nombre de la receta y luego todos los
ingredientes separados por comas.
Recetas
Tu misión es escribir un programa capaz de responder a las instrucciones del ususario en la siguiente forma. Hay tres comandos: PREPARAR, REPONER, y STOP. Cualquier otra palabra inicial que no sea una de ellas se ignora.
PREPARAR viene seguida del nombre de una de las recetas del archivo.
REPONER viene seguida de una lista de ingredientes separados por espacios. Pueden haber ingredientes que aparezcan más de una vez
STOP no es acompañada por nada.
Si la orden es PREPARAR debe procederse a verificar si la receta es válida y si tenemos los ingredientes. En ese caso se reduce en una unidad cada uno de los ingredientes que la receta indicada incluye. Si la receta no existe en el archivo de recetas (por ejemplo, Omelette) se imprime el siguiente mensaje:
*** Lo sentimos pero no preparamos Omelette ***
Si la receta es válida (por ejemplo, PastelDeCarne), pero hay algún ingrediente del cual no tenemos stock (por ejemplo stock = 0 para Carne) se imprime el siguiente mensaje:
*** No se puede hacer PastelDeCarne porque falta Carne ***
Si la orden es REPONER debe procederse a aumentar en una unidad el stock de cada uno de los ingredientes indicados (si aparece varias veces se agrega por cada aparición. Si algún producto de los ingresados no existe en el archivo simplemente se ignora.
Cada vez que se pide PREPARAR o REPONER, luego de realizar la acción debe desplegarse una lista de los ingredientes con sus respectivos stocks actualizados en la forma:
Stock actual de ingredientes disponibles
Tomate 5
Lechuga 2
Hamburguesa 10
Carne 2
Espárragos 8
Pan 11
Papa 4
Cebolla 11
Si la orden es STOP el programa se detiene
Mientras no se ingrese la orden de STOP el programa vuelve a pedir una nueva orden del usuario.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#print("Por favor abrir el archivo Ingredientes.txt")
Ingredientes = open("Ingredientes.txt",encoding="UTF-8")
leer_archivos=Ingredientes.readlines()
dic_Ingredientes={}
for limpia in leer_archivos:
limpia=limpia.rstrip('\n')
fila=limpia.split(' ')
key=fila[0]
value=fila[1:]
dic_Ingredientes[key]=value
print("El stock inicial de ingredientes disponibles es ",dic_Ingredientes)
print("Por favor abrir el menú 'Recetas.csv' ")
Archivo = open("Recetas.csv",encoding="UTF-8")
leer_archivosR=Archivo.readlines()
#print(leer_archivosR)
dic_Recetas={}
for limpia in leer_archivosR:
limpia=limpia.rstrip('\n')
fila=limpia.split(',')
key=fila[0]
value=fila[1:]
dic_Recetas[key]=value
print(dic_Recetas)
print("Menú cargado exitosamente \n")
#Opciones para escoger del menú
print ("Seleccione el número de las siguientes opciones \n" )
print("Opción 1: PREPARAR")
print("Opción 2: REPONER")
print("Opción 3: STOP")
num=int(input("Ingrese su opción: "))
if num==1:
print("El stock actual de ingredientes disponibles es ",dic_Ingredientes, "\n")
print( "¿Qué desea preparar? \n")
print("Opción 1: Hamburgesa Casera")
print("Opción 2: Pastel de Carne")
print("Opción 3: Ensalada Especial")
receta=int(input("Ingrese su opción: "))
1=="HamburguesaCasera"
2=="PastelDeCarne"
3=="PastelDeCarne"
if receta ==1:
receta="HamburguesaCasera"
elif receta ==2:
receta = "PastelDeCarne"
elif receta ==3:
receta= "EnsaladaEspecial"
else:
receta>3
print("Opcion Incorrecta")
def preparar(receta): #recibe como parametro el nombre de la receta
if receta in dic_Recetas: #verificamos que exista la receta
Ingredientes_receta = dic_Recetas[value] #obtenemos los ingredientes
for ing in Ingredientes: #recorremos la lista de ingredientes
if dic_Ingredientes[value] == 0: #si es 0 no se puede preparar
return "No se puede preparar por que falta {ing}"
else:
descontar(ing) #descontamos
return "Listo!" #todo salio bien
#si no existe decimos que la receta no fue encontrada
else: return "receta no encontrada"
elif num==2:
print("El stock actual de ingredientes disponibles es ",dic_Ingredientes)
def descontar(Ingredientes):
if Ingredientes in dic_Ingredientes: #verificamos que existe
#como los valores del diccionario son de tipo entero podemos restar directamente
dic_Ingredientes[Ingredientes] -= 1
return "Listo"
else:
#decimos que no existe el ingrediente
return f"No existe el ingrediente {Ingredientes}"
Valora esta pregunta


0