La solicitud

De Debra Marshall, Gerente de Almacén
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
Cargando el editor…
Solución de referencia
Mote revisa tu resultado
Presiona Ejecutar. Cada fila que cumple el objetivo se vuelve una luciérnaga en tu linterna.
Lo que recibe Debra, y por qué
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 > 0en lugar destock >= demand. Eso cuenta una sexta semana que el stock no puede cubrir. - Redondear
demanden cada pasada, lo que se va alejando poco a poco de los números reales.
¡Linterna encendida!
Practicaste: while loopaccumulatorloop conditiongrowth
- Resuelto
- Sin pistas
- Al primer intento
