Bucles While
Los bucles while
son la herramienta clave para manejar la iteración indefinida, lo cual es útil en escenarios donde no se conoce de antemano el número de iteraciones, como al monitorear los niveles de inventario hasta que alcancen un umbral específico.
Observa cómo Alex demuestra el uso de bucles while
para gestionar situaciones dinámicas:
Un bucle while
en Python ejecuta continuamente un bloque de código mientras una condición especificada permanezca en True
.
Sintaxis
Para iniciar un bucle while
, se define una variable contador y se utiliza la palabra clave while
seguida de una condición booleana. La condición va seguida de dos puntos :
, lo que indica el inicio del bloque de código del bucle.
El bucle se ejecutará repetidamente hasta que la condición sea False
. Normalmente, la variable contador se actualiza dentro del bucle para que eventualmente la condición sea False
y el bucle se detenga.
Considera este ejemplo de bucle while
:
# Handling a queue at a grocery store checkout queue_length = 5 # Initial number of people in the queue while queue_length > 0: # Start the `while` loop as long as the queue isn't empty print(f"Current queue size: {queue_length}") # Simulate serving a customer print("Serving the next customer...") # Decrease the queue length by 1 as a customer leaves # The `-=` operator is a shortcut for `queue_length = queue_length - 1` queue_length -= 1
En este ejemplo, queue_length
actúa como nuestra variable contadora, comenzando en 5
. Con cada iteración del bucle, el valor de queue_length
disminuye en 1
hasta que llega a 0
. En ese momento, el bucle termina porque la condición 0 > 0
se evalúa como False
.
Nota
Es fundamental actualizar la variable contadora dentro del bucle para finalmente cumplir la condición de finalización del bucle. De lo contrario, el bucle se ejecutará infinitamente, impidiendo que se ejecute cualquier otro código.
Aplicación de ejemplo
Imagina que estás gestionando el stock de leche en un supermercado. Debes asegurarte de que el stock no baje de cierto nivel y, cuando lo haga, deberías reponerlo para mantener el nivel adecuado.
Un bucle while
es útil en esta situación porque permite reponer la leche en incrementos a lo largo de varias iteraciones hasta alcanzar el nivel deseado. Sin un bucle while
, tendrías que calcular la cantidad exacta de leche a reponer de una sola vez.
Por ejemplo, considera que un trabajador de la tienda solo puede reponer una cantidad fija de leche en un solo viaje (por ejemplo, 20
paquetes por reposición). Si el stock no se repone completamente, el trabajador regresa al almacén para traer otro lote de leche.
# Initial amount of milk in stock milk_stock = 15 # Minimum stock level before restocking is necessary min_stock = 50 # Quantity a worker can restock at one time restock_quantity = 20 # Start the loop to restock milk until the stock exceeds the minimum required level while milk_stock < min_stock: # If the loop is running, the condition is `True`, indicating we need more milk print(f"Milk stock is low: {milk_stock} units remaining.") # Simulate the process of restocking milk print("Restocking milk...") # Increase the stock by the quantity the worker can bring in one trip milk_stock += restock_quantity # Output the final stock level after restocking is complete print(f"Milk stock updated: {milk_stock} units, which is now sufficient.")
Nota
milk_stock += restock_quantity
es equivalente amilk_stock = milk_stock + restock_quantity
. Es simplemente una forma más concisa y legible de expresar la misma operación.
El diagrama de flujo anterior ilustra la lógica detrás del bucle while
utilizado para gestionar el inventario de leche. Observe cómo la variable contador milk_stock
, que comienza en 15
, se incrementa por el valor de restock_quantity
en cada iteración del bucle.
El bucle continúa ejecutándose hasta que milk_stock
supera el umbral min_stock
de 50
, momento en el cual se detiene.
Swipe to start coding
Gestionar el inventario de una tienda de comestibles utilizando bucles while para asegurar que Bread
, Eggs
y Apples
cumplan con sus niveles mínimos de stock. Las cantidades de reposición se almacenan en un diccionario.
- Utilizar un bucle
while
para comprobar si"Bread"
está por debajo de su stock mínimo. Si es así, aumentar su stock utilizando la cantidad de reposición correspondiente del diccionario. - Repetir la misma lógica para
"Eggs"
y"Apples"
, cada uno con su propio buclewhile
. - Después de reponer, recorrer el diccionario
inventory
usando un buclefor
e imprimir los niveles finales de stock para todos los artículos.
Requisitos de salida
- Para cada artículo repuesto, imprimir:
"<Item> stock is low: <$current_stock> units. Restocking..."
- Después de toda la reposición, imprimir
Final Inventory after restocking:
seguido de los niveles de stock actualizados:
"<Item>: <$current_stock> units (Minimum required: <$minimum_stock> units)"
- Insertar una nueva línea antes del inventario final usando
\n
. - Utilizar f-strings para el formato y comillas simples dentro de las cadenas de diccionario.
Nota
Para evitar conflictos de sintaxis en las f-strings, usar comillas dobles alrededor de la cadena y comillas simples dentro:
f"Bread stock is low: {inventory['Bread'][0]} units."
Usar\n
para comenzar una nueva línea en la salida:"First line.\nSecond line."
Solución
¡Gracias por tus comentarios!