Python - Tengo un problema con una parte de un codigo

 
Vista:
sin imagen de perfil

Tengo un problema con una parte de un codigo

Publicado por anonymous (38 intervenciones) el 09/06/2021 11:32:29
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
def inventario_ingrediente(ingrediente, inventario):
 
    despensa = inventario.split(";") #lista separando por ingrediente
 
    lista2 = []
 
    for numero in range (len(despensa)):
 
        palabra = despensa[numero]
 
        lista = palabra.split(",") #lista separando el ingrediente y su cantidad
 
        lista2.append(lista)
 
    contador = 0
 
    for cantidad in range(len(lista2)):
 
        if ingrediente in lista2:
 
            return lista2[cantidad][1] #retornar el valor de la catidad de ingredientes
 
        else:
 
            return 0
 
    contador += 1


donde el input puede ser el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
ingrediente_0 = "atun"
print(ingrediente_0)
inventario_0 = "berenjena,1;pan,1;arroz,1"
print(inventario_0)
cantidad_ingrediente_0 = inventario_ingrediente(ingrediente_0, inventario_0)
print(cantidad_ingrediente_0)
print()
 
ingrediente_1 = "zapallo"
print(ingrediente_1)
inventario_1 = "pan,1"
print(inventario_1)
cantidad_ingrediente_1 = inventario_ingrediente(ingrediente_1, inventario_1)
print(cantidad_ingrediente_1)
print()
 
ingrediente_2 = "pan"
print(ingrediente_2)
inventario_2 = "zapallo,1;atun,1;arroz,1;pan,1;berenjena,1"
print(inventario_2)
cantidad_ingrediente_2 = inventario_ingrediente(ingrediente_2, inventario_2)
print(cantidad_ingrediente_2)
print()

el output debería ser:
atun
berenjena,1;pan,1;arroz,1
0

zapallo
pan,1
0

pan
zapallo,1;atun,1;arroz,1;pan,1;berenjena,1
1
y el mio es:

atun
berenjena,1;pan,1;arroz,1
0

zapallo
pan,1
0

pan
zapallo,1;atun,1;arroz,1;pan,1;berenjena,1
0
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 joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Tengo un problema con una parte de un codigo

Publicado por joel (903 intervenciones) el 09/06/2021 12:04:49
Hola Pedro, puedes simplificar bastante la funcion... prueba esta:

1
2
3
def inventario_ingrediente(ingrediente, inventario):
    result = [int(i.split(",")[1]) for i in inventario.split(";") if i.split(",")[0]==ingrediente]
    return result[0] if result else 0
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Tengo un problema con una parte de un codigo

Publicado por anonymous (38 intervenciones) el 09/06/2021 12:19:56
Muy buenas Joel, te debo mil gracias, ahora si es que me pudieras dar una mano con esta función, te lo agradeceria aun mas,

alcanza_receta(plato, inventario): Esta función recibirá dos parámetros: plato [str] e inventario [str]. El string plato representará todos los ingredientes necesarios y sus cantidades para preparar cierto plato. Mientras que inventario representará todos los ingredientes que están disponibles junto con sus cantidades, al igual que en la función anterior. Ambos strings se encontrarán en el mismo formato, cada ingrediente separado por ";" y el nombre con la cantidad de un mismo ingrediente separados por una coma.

Lo que debe realizar esta función es revisar si existen los ingredientes necesarios en inventario para preparar el plato.

Un ejemplo de input sería:
arroz,2;atun,1
queso,4;atun,5;pan,3;arroz,2

y el output:

Se puede hacer este plato y las cantidades de los ingredientes usados del inventario quedan:
atun,4;pan,1
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