1. Faro

Nivel 6 · Existencias tras un día de ventas

La solicitud

De Debra Marshall, Gerente de Almacén

“Aquí está el conteo de existencias de esta mañana y las ventas de hoy tal como salieron de la línea de empaque. ¿Qué nos queda en la estantería esta noche, por producto?”

Tu objetivo

Asigna a result un diccionario con las mismas claves que stock, donde cada valor sea el stock de la mañana menos cada cantidad vendida de ese producto en sales (ints). No cambies a mano los números iniciales.

  • Guarda un dict en resultpendiente

Tu código

Python

Cargando el editor…

    ResultadoPresiona Ejecutar para ver el tuyo

    Mote revisa tu resultado

    Presiona Ejecutar. Cada fila que cumple el objetivo se vuelve una luciérnaga en tu linterna.

    La lección

    Desempaquetar parejas en un bucle

    Cada venta es una tupla, una pareja fija de valores: el nombre del producto y la cantidad. Cuando todos los elementos de una lista tienen la misma forma, puedes desempaquetarlos directamente en la línea del for:

    for name, qty in sales:
        print(name, qty)
    # Hazel Linen Throw Pillow 6
    # Northfield Brass Bud Vase 2
    # ...

    Eso es más claro que sale[0] y sale[1], y Python lanza un error si alguna fila tiene un número de valores incorrecto, lo que es un aviso temprano útil en un flujo de datos desordenado.

    Actualizar un diccionario en el sitio

    Un diccionario de niveles de existencias es un saldo acumulado. Cada venta lee el número actual de esa clave y escribe el nuevo:

    left = dict(stock)                 # a copy, so the morning count stays intact
    left["Hazel Linen Throw Pillow"] = left["Hazel Linen Throw Pillow"] - 6    # 34

    El cojín aparece tres veces en las ventas de hoy: 6, 3 y 2 unidades. Cada pasada del bucle resta de lo que dejó la anterior, así que va 40, 34, 31, 29. La misma línea se puede escribir con el atajo left[name] -= qty.

    dict(stock) crea un diccionario nuevo con las mismas claves y valores. Trabajar sobre una copia significa que sigues teniendo los números de la mañana si alguien pregunta «¿con qué empezamos?», y puedes repetir el cálculo sin volver a cargar nada. Si escribieras left = stock, ambos nombres apuntarían al mismo diccionario y el conteo de la mañana se sobrescribiría.

    Comprueba los totales

    Una conciliación rápida detecta la mayoría de los errores. Las existencias de la mañana suman 85 unidades, y las ventas suman 23. Lo que obtengas al final debe sumar 85 - 23 = 62:

    sum(left.values())       # 62

    Si tus números no cuadran, se omitió una venta o se contó dos veces.

    Errores comunes

    • Restar del número de la mañana en cada pasada (stock[name] - qty). Solo sobrevive la última venta de cada producto.
    • Escribir left = stock en lugar de una copia, y luego preguntarte por qué cambió el conteo de la mañana.
    • Olvidar que el nombre de un producto en sales debe coincidir exactamente con la clave. “Hazel linen throw pillow” con una l minúscula lanzaría un KeyError.

    Elige qué puede ejecutarse en este sitio. Puedes cambiarlo cuando quieras desde "Configurar cookies", al pie de cada página.