Bucles For
¡Bienvenido a la sección dedicada a los bucles!
En este capítulo, exploraremos cómo los bucles son una herramienta clave para la automatización de tareas repetitivas y resultan esenciales para manejar de manera eficiente listas y otros tipos de datos iterables.
Acompaña a Alex mientras demuestra el uso de los bucles for
para simplificar operaciones en nuestra tienda de comestibles:
El uso de los bucles for
en Python permite ejecutar un bloque de código repetidamente para cada elemento en una colección (objeto iterable). Aspectos clave sobre los bucles for
:
Sintaxis
Un bucle for
se inicia con la palabra clave for
, seguida de un nombre de variable como item
para representar cada elemento en la secuencia. Luego se utiliza la palabra clave in
y, a continuación, el objeto iterable como groceryItems
. El bloque de código dentro del bucle se ejecuta una vez por cada elemento.
En este ejemplo, item
actúa como la variable iteradora que accede secuencialmente a cada elemento de la lista groceryItems
y ejecuta la función print()
para cada uno:
groceryItems = ["milk", "eggs", "cheese", "butter"] for item in groceryItems: # Code to be executed print(item)
Iteración se refiere al proceso de ejecutar un bloque de código repetidamente. Python admite dos tipos principales de iteración:
Iteración Definida
Cuando el número de iteraciones es conocido de antemano. Los bucles for
son un ejemplo clásico, ya que se detienen automáticamente cuando alcanzan el final de la secuencia.
Iteración Indefinida
En la que la ejecución continúa hasta que se cumple una condición específica, normalmente gestionada por los bucles while
, que se explorarán en detalle en el próximo capítulo.
Ejemplos de Aplicación
Los bucles for
en Python pueden utilizarse con cualquier objeto iterable (lists
, tuples
, dictionaries
, strings
), lo que permite la manipulación de datos elemento por elemento.
Ya sea que necesite acceder a elementos en una lista, claves o valores en un diccionario, o caracteres en una cadena, los bucles for
proporcionan una sintaxis clara que simplifica el código para tareas repetitivas.
A continuación se muestra cómo puede utilizar un bucle for
para iterar sobre los elementos de una cadena y una tupla, de manera similar a como se hace con las listas:
# Print each letter in the string vegetable = "Carrot" for letter in vegetable: print(letter) # Tuple containing different categories of the grocery store categories = ("Produce", "Bakery", "Meat", "Dairy") for category in categories: print(category)
Al utilizar un bucle for
con un diccionario, iterar directamente sobre el diccionario recorrerá sus claves por defecto.
Esto es lo que sucede al iterar directamente sobre un diccionario:
# Dictionary of products and their stock counts productStock = {"milk": 120, "eggs": 200, "bread": 80} # Print each dictionary key print("Product list:") for product in productStock: print(product)
Observa cómo la variable iteradora product
solo accede a las claves del diccionario.
Para iterar sobre los valores de un diccionario, puedes utilizar el método values()
.
Esto es útil para operaciones que requieren acceso a los valores sin necesidad de hacer referencia a las claves:
# Dictionary of products and their stock counts productStock = {"milk": 120, "eggs": 200, "bread": 80} # Print each dictionary value print("Stock counts:") for stock in productStock.values(): print(stock)
Si necesitas acceder a las claves y valores simultáneamente, el método items()
te permite recorrer pares clave-valor en un diccionario.
Para utilizar este método en un bucle for
, se deben especificar dos variables antes de la palabra clave in
: una para la clave (product
) y otra para el valor (stock
):
# Dictionary of products and their stock counts productStock = {"milk": 120, "eggs": 200, "bread": 80} # Print both the key and value for each dictionary item print("Inventory details:") for product, stock in productStock.items(): print(f"{product} has {stock} units in stock.")
Nota
En este ejemplo, se utilizan f-strings (también conocidas como cadenas literales formateadas) para insertar variables directamente en cadenas de texto. La sintaxis es sencilla: añade una
f
antes de la comilla de apertura"
y coloca variables o expresiones dentro de llaves{}
en la cadena. Este método hace que la combinación de cadenas y variables en las sentencias print sea mucho más legible, por lo que vale la pena aprenderlo.
Basándose en el conocimiento de if/else
, operadores booleanos y bucles for
, es posible realizar una comprobación sencilla de inventario en un diccionario:
# Product names as keys and their stock levels as values inventory = { "milk": 120, "eggs": 30, "bread": 80, "apples": 10 } # The threshold stock level that triggers a restock minimum_stock = 50 # Evaluating stock levels and deciding if restocking is necessary print("Checking inventory status:") for product, quantity in inventory.items(): if quantity < minimum_stock: print(f"{product} requires restocking. Only {quantity} units remain.") else: print(f"{product} has adequate stock with {quantity} units available.")
Nota
Puede notar que hemos colocado sentencias
if
dentro del buclefor
, lo que añadió sangría adicional al bloqueif
. Como se mencionó anteriormente, cada bloque de código con sangría puede considerarse independiente, sin importar dónde se coloque. Lo importante es asegurarse de que la sangría sea consistente y correcta entre ellos.
Swipe to start coding
Gestionar el inventario y las promociones en una tienda de comestibles recorriendo el inventario, verificando las condiciones de reposición y aplicando promociones.
- Recorrer cada producto en el diccionario
inventory
. - Dentro del bucle, obtener
current_stock
ymin_stock
de la lista de inventario. - Utilizar una declaración
if
para comprobar si el stock actual es menor o igual que el stock mínimo:- Si es así, imprimir un mensaje de reposición, aumentar el stock en
20
, actualizar el inventario e imprimir el mensaje de actualización.
- Si es así, imprimir un mensaje de reposición, aumentar el stock en
- Utilizar otra declaración
if
para comprobar si el producto existe en el diccionariopromotions
.
Requisitos de salida
Para cada artículo, imprimir:
-
--- Processing: <item> ---
-
Si se necesita reposición:
<item> needs restocking. Current stock: <current_stock>. Minimum required: <min_stock>
Updated stock for <item>: <updated_stock>
-
Si existe promoción:
Promotion for <item>: <promotion_details>
-
Si no:
No promotions for <item>
Solución
¡Gracias por tus comentarios!