1. Faro

Nivel 9 · ¿Cuántas semanas faltan para quedarnos sin existencias?

La solicitud

De Debra Marshall, Gerente de Almacén

“Tenemos 260 ollas holandesas y no llega ninguna entrega hasta enero. Ahora vendemos unas 38 por semana y la demanda navideña crece más o menos un 10% cada semana. ¿Cuántas semanas completas podemos cubrir y qué nos queda después?”

Tu objetivo

Asigna a result un diccionario con las claves 'weeks' (un int: cuántas semanas completas de demanda cubre el stock, donde la semana 1 necesita demand unidades y cada semana siguiente necesita un 10% más que la anterior) y 'left' (unidades que quedan después de esas semanas, un float redondeado a 1).

  • 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

    ¿for o while?

    Un bucle for recorre algo que ya existe: una lista de pedidos, las claves de un diccionario, un range. Un bucle while se repite mientras una condición sea verdadera, que es lo que necesitas cuando no sabes de antemano cuántos pasos habrá.

    while stock >= demand:
        # one more week can be covered
        ...

    Python comprueba la condición, ejecuta el cuerpo, vuelve a comprobar y se detiene la primera vez que la condición es falsa. El cuerpo debe cambiar algo de lo que depende la condición, o el bucle nunca termina.

    Contar semanas con demanda creciente

    Si la demanda fuera plana, 260 // 38 respondería la pregunta: 6 semanas. Pero la demanda navideña crece un 10% cada semana, así que cada semana necesita más que la anterior. El bucle lo gestiona actualizando tres cosas en cada pasada:

    weeks = 0
    while stock >= demand:
        stock = stock - demand            # ship this week's units
        demand = demand * (1 + growth)    # next week needs 10% more
        weeks += 1                        # one more week covered

    Seguirlo paso a paso muestra con qué rapidez el crecimiento se come el margen. Las necesidades semanales son 38, 41.8, 45.98, unos 50.6 y unos 55.6. Después de cinco semanas han salido 232 unidades y quedan 28. La semana seis necesitaría unas 61.2, más de lo que queda, así que la condición es falsa y el bucle se detiene con weeks en 5. Eso es una semana completa menos que la estimación con demanda plana, lo que importa para una entrega en enero.

    Asegúrate de que pueda detenerse

    Todo bucle while necesita una salida. Aquí el stock baja y la demanda sube en cada pasada, así que stock >= demand acabará siendo falsa. Si olvidas restar la demanda, el stock nunca cambia y el bucle se ejecuta hasta que la página lo detiene. Cuando escribas un while, pregúntate «¿qué hay en el cuerpo que acerque la condición a ser falsa?» antes de ejecutarlo.

    Errores comunes

    • Usar la división entera sobre los números iniciales e ignorar el crecimiento.
    • Olvidar una de las actualizaciones, lo que da un bucle infinito.
    • Comprobar stock > 0 en lugar de stock >= demand. Eso cuenta una sexta semana que el stock no puede cubrir.
    • Redondear demand en cada pasada, lo que se va alejando poco a poco de los números reales.

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