Python - Recetas Python

 
Vista:
Imágen de perfil de Marco

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.
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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Marco

Recetas Python

Publicado por Marco (10 intervenciones) el 04/05/2022 00:33:41
Alguién me puede ayudar?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 10
Ha disminuido su posición en 10 puestos en Python (en relación al último mes)
Gráfica de Python

Recetas Python

Publicado por juan (12 intervenciones) el 24/12/2022 12:13:37
Hola Marco, veo que lo que se debe hacer es una especie de interprete de comandos que interprete los tres tipos de comandos indicados
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de algoritmo
Val: 819
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Recetas Python

Publicado por algoritmo (33 intervenciones) el 04/05/2022 20:20:36
Hola

Algo te lo he mejorado. Espero que te sirva :)

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
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=int(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")
 
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[receta] #obtenemos los ingredientes
        for ing in Ingredientes_receta: #recorremos la lista de ingredientes
            if dic_Ingredientes[ing] == 0: #si es 0 no se puede preparar
                print("No se puede preparar por que falta %s" % ing)
            else:
                descontar(ing) #descontamos
        print("Listo!") #todo salio bien
        print("El stock inicial de ingredientes disponibles es ",dic_Ingredientes)
    #si no existe decimos que la receta no fue encontrada
    else:
        print("receta no encontrada")
 
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
        print("Listo")
    else:
        #decimos que no existe el ingrediente
        print("No existe el ingrediente %s" % Ingredientes)
 
#Opciones para escoger del menú
while True:
    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:
            preparar("HamburguesaCasera")
        elif receta ==2:
            preparar("PastelDeCarne")
        elif receta ==3:
            preparar("EnsaladaEspecial")
        else:
            receta>3
            print("Opcion Incorrecta")
    elif num==2:
        print("El stock actual de ingredientes disponibles es ",dic_Ingredientes)
 
    elif num==3:
        break
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Marco

Recetas Python

Publicado por Marco (10 intervenciones) el 18/05/2022 05:14:23
Muchas gracias, lo voy a revisar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Recetas Python

Publicado por andres (1 intervención) el 24/12/2022 05:25:42
Estimado pudo realizar el ejercicio si la respuesta es positiva me lo podria compartir porfavor lo necesito urgente !!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 10
Ha disminuido su posición en 10 puestos en Python (en relación al último mes)
Gráfica de Python

Recetas Python

Publicado por Juan (12 intervenciones) el 25/12/2022 11:17:26
https://www.youtube.com/watch?v=j41dp0uDcNo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar