Python 🐍 : Estructuras Repetitivas Bucles (FOR y WHILE)
Después de aprender a tomar decisiones en función una o más condiciones con las estructuras condicionales, como el if
, elif
y else
, ahora veremos cómo podemos repetir acciones utilizando estructuras repetitivas o “bucles”.
Por lo general, el código en Python se ejecuta de manera secuencial, es decir, empieza por la primera línea, pasa a la segunda y así sucesivamente. Sin embargo, existen casos, cuando se necesita que un fragmento de código se repita. Python y en general el mundo de la programación cuentan con las herramientas llamadas bucles para facilitar esta tarea. Los bucles permiten cambiar el flujo lineal del programa para repetir una parte del código tantas veces como sea necesario.
Tipos de Bucles en Python
En Python, hay dos tipos principales de bucles: el bucle for
y el bucle while
. Ambos nos permiten controlar el flujo de un programa, pero de diferentes maneras.
Bucle WHILE
Un bucle while
se ejecuta mientras una condición sea verdadera. Esto significa que el código dentro del bucle se repetirá tantas veces como sea necesario, hasta que la condición deje de cumplirse.
¿Cómo funciona el bucle WHILE?
Para entender como funciona un flujo de un programa lineal y un flujo con bucle while
de forma visual, pues aquí te dejo un diagrama que muestra ambos flujos:
---
title: Programa Lineal VS Programa con Bucles
---
flowchart TB
subgraph "<font size='3' style='padding: 30px'>Con bucle</font>"
direction TB
b1([inicio])
b1 --> b2["Inicializar variable o secuencia"]
b2 -->b3{"¿Condición verdadera?"}
b3 --> |Si| c2["Ejecutar instrucciones"]
b3 --> |No| f([Fin])
c2 --> d2[Actualizar variable]
d2 --> b3
end
subgraph "<font size='3' style='padding: 40px'>Lineal</font>"
direction TB
inicio([Inicio])
-->a1["Instrucción 1"]
a1 --> a2["Instrucción 2"]
a2 --> a3["Instrucción 3"]
a3 --> a4["Instrucción 4"]
a4 --> fin([fin])
end
Un error común cuando se usa
while
es olvidar inicializar o actualizar adecuadamente la variable que controla la condición. Si la condición nunca cambia aFalse
, el bucle se ejecutará indefinidamente, generando lo que se conoce como un bucle infinito.
Ejemplo Básico
Veamos cómo usar while
para hacer una cuenta regresiva:
>>> i = 5
... while i > 0:
... print(i)
... i -= 1
... print("¡Booom!")
...
5
4
3
2
1
¡Booom!
La operación
i -= 1
es lo que suele llamar un decremento de una variable. Es equivalente ai = i - 1
y por ende es muy común simplificarlo, aunque hace exactamente lo mismo.
Lo que ocurre a la hora de hacer funcionar este código es lo siguiente:
- Antes de entrar en el bucle
while
, se inicializa la variablei
en5
. - Antes de realizar la primera iteración del bucle, comprobamos la condición.
- Si la condición es verdadera, hacemos lo que está dentro del bucle.
- Mostramos por pantalla el valor de
i
y luego decrementamos el valor actual dei
en1
. - Volvemos al inicio del bucle para hacer una nueva iteración. Comprobamos de nuevo la condición del bucle.
- Cuando la condición sea falsa, salimos del bucle y se muestra por pantalla ¡Boom!.
Un bucle while
es muy simple, pero requiere que declaremos una variable previamente y actualizar su valor para evaluar y evitar que el programa se quede colgado en un bucle infinito.
Bucle FOR
A diferencia del bucle while
, que se repite mientras se cumpla una condición lógica, el bucle for
se utiliza para recorrer una colección o secuencia de elementos.
Estas secuencias pueden ser estructuras ordenadas como listas, tuplas o cadenas de texto y cualquier objeto iterable, como diccionarios, conjuntos, o incluso objetos personalizados.
¿Cómo funciona el bucle FOR?
Ahora veamos cómo funciona internamente a través de un flujo de ejecución.
---
title: Flujo del bucle FOR
---
flowchart TD
A([Inicio]) --> B[Obtener iterable]
B --> C[¿Hay más elementos?]
C -- Sí --> D[Asignar siguiente elemento a variable]
D --> E[Ejecutar el bloque de código]
E --> C
C -- No --> F[Fin del bucle]
F --> G[Continuar con el resto del programa]
G --> T([Fin])
Ejemplos básicos
1. Podemos imprimir el valor de la variable de iteración utilizando el bucle for
:
>>> for i in [1, 2, 3, 4, 5]:
... print("Valor de i:", i)
...
El valor de i: 1
El valor de i: 2
El valor de i: 3
El valor de i: 4
El valor de i: 5
2. En algunos casos, si la variable de control no se va a utilizar en el cuerpo del bucle, es común utilizar un guión bajo (_
) en vez de un nombre:
>>> for _ in [1, 2, 3, 4, 5]:
... print("Hola")
...
Hola
Hola
Hola
Hola
Hola
El
_
es solo una notación que no tiene ninguna consecuencia con respecto al funcionamiento del programa, pero sirve de ayuda a la persona que esté leyendo el código fuente, que sabe así que los valores no se van a utilizar
En los ejemplos anteriores, la variable de control no se le ha dado un uso relevante aparte de mostrar su valor, pero en muchos casos sí se utiliza para realizar alguna otra operación.
3. Elevar al cuadrado cada valor dentro de la lista operando con la variable de iteración:
>>> for i in [3, 4, 5]:
... print(f"Hola. Ahora i vale {i} y su cuadrado es {i ** 2}")
...
Hola. Ahora i vale 3 y su cuadrado es 9
Hola. Ahora i vale 4 y su cuadrado es 16
Hola. Ahora i vale 5 y su cuadrado es 25