Un ejemplo de cosas anidadas

inventario = {
    "camiseta": {
        "variantes": [
            {"color": "rojo", "tamaño": "M", "cantidad": 10},
            {"color": "azul", "tamaño": "L", "cantidad": 5}
        ],
        "precio": 30
    },
    "pantalones": {
        "variantes": [
            {"color": "negro", "tamaño": "32", "cantidad": 15},
            {"color": "azul", "tamaño": "34", "cantidad": 7}
        ],
        "precio": 60
    }
}

# stock total de pantalones
# llegar a pantalones. Dentro de pantalones, variantes
# variantes es una lista, la recorro
# dentro de esa lista me interesa la cantidad
print(inventario["pantalones"]["variantes"])
suma = 0
for variante in inventario["pantalones"]["variantes"]:
    print(variante["cantidad"])
    suma += variante["cantidad"]
print(suma)
print(suma*inventario["pantalones"]["precio"])

def vender_producto(inventario, producto, color, tamaño, cantidad_vendida):
    # comprobar que el producto esté
    if producto in inventario:
        # recorro todas las variantes
        for variante in inventario[producto]["variantes"]:
            # Si alguna variante coincide con el color y el tamaño
            if variante["color"] == color and variante["tamaño"] == tamaño:
                # compruebo que haya suficiente stock
                if variante["cantidad"] >= cantidad_vendida:
                    # resto la cantidad
                    variante["cantidad"] -= cantidad_vendida
                    return True
                else: # si no hay suficiente stock devuelvo false
                    return False
    # si el producto no está en el inventario
    # o no ha encontrado al recorrer las varianes es color y ese tamaño devuelvo false
    return False

# Ejemplo de uso
producto = "camiseta"
color = "rojo"
tamaño = "M"
cantidad_vendida = 3

venta_exitosa = vender_producto(inventario, producto, color, tamaño, cantidad_vendida)
print("Venta exitosa:", venta_exitosa)
print("Inventario actualizado:", inventario)

# Supongamos que quiero hacer una función que me de el stock valorado de un inventario
# (cantidad * precio) ¿Como lo hago?

def stockValorado(inventario):
    total=0
    # hacer un for sobre inventario que nos devuelve
    for producto in inventario:
        valor=inventario[producto]
        precio=valor["precio"]
        suma=0
        for variante in valor["variantes"]:
            print(variante["cantidad"])
            suma+=variante["cantidad"]
        print(precio,suma)
        total+=precio*suma
    return total



print(stockValorado(inventario))

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos