Saltar a contenido

Estructuras de ciclos cerrados

Recordemos que existen estructuras de control de flujo que nos permiten repetir instrucciones de manera automática. Estas estructuras se llaman bucles, ciclos o simplemente estructuras repetitivas.

Y que una de ellas es la estructura de ciclo cerrado. Se utiliza cuando si sabemos cuántas veces se va a repetir un bloque de 1 o más líneas de código.

La palabra clave for

A partir de ahora exploraremos otro tipo de estructura de control de flujo: el bucle for. Aunque este término existe en otros lenguajes de programación, en Python tiene características particulares, diferentes a como se comporta en otros lenguajes.

for y las listas

Para entender mejor el bucle for, es necesario introducir un nuevo tipo de dato en Python: las listas. Esto amplía nuestro conocimiento sobre los tipos de datos que maneja este lenguaje. Si bien estudiaremos las listas más adelante, es importante tener una idea general de lo que son para comprender cómo funciona el bucle for.

Hasta ahora, hemos visto cadenas de caracteres str, números enteros int, números de punto flotante float y valores booleanos bool.

Las listas, en Python, son otro tipo de dato que probablemente te resultará familiar, ya que se asemejan a las listas que usamos en la vida cotidiana.

Por ejemplo:

Python
nombres = ["Juan", "María", "Carlos", "Ana", "Pedro"]

En este caso, nombres es una lista de nombres. Cada nombre es un elemento de la lista. Y la lista contiene 5 elementos: "Juan", "María", "Carlos", "Ana" y "Pedro".

Esencialmente, una lista es una forma de agrupar múltiples valores en una sola variable, permitiéndonos manejar conjuntos de datos de manera eficiente. Ya veremos más adelante cómo trabajar con listas en Python. No te preocupes por ahora.

Sintaxis del bucle for

Recordemos el código de nuestro programa anterior:

Python
cant_saludos = 0

while cant_saludos < 5:
    print("Hola")
    cant_saludos += 1
Y ahora refactoricemos nuestro programa utilizando un bucle for en lugar de un bucle while:

Python
for i in [0, 1, 2, 3, 4]:
    print("Hola")

El bucle for nos permite iterar sobre una secuencia de elementos de manera más concisa. Este código en for es más compacto que su equivalente en while, lo cual es una ventaja.

El bucle while que usamos antes requería más líneas y nos obligaba a manejar manualmente la variable cant_saludos, comprobando condiciones e incrementándola. Era un proceso más mecánico y detallado.

En contraste, el bucle for simplifica este proceso. Si sabemos de antemano cuántas veces queremos que se repita una acción (en este caso, 5 veces), podemos especificar directamente los valores que queremos que tome la variable i.

¡Para recordar!

No es necesario inicializar la variable i manualmente. Python se encarga de inicializar la variable, primero, con 0, luego con 1, luego con 2, y así sucesivamente con cada valor de la lista.

A diferencia de otros lenguajes, no es necesario inicializar la variable de control del ciclo con ningún valor. Cuando el ciclo se inicie, la variable simplemente existirá y la iteración funcionará perfectamente.

En este caso, for i in [0, 1, 2, 3, 4]: es la estructura del bucle for. La variable i es la variable de control del bucle , que toma los valores de la lista [0, 1, 2, 3, 4] en cada iteración. En cada iteración (repetición), se imprime "Hola".

Una vez que se han utilizado todos los valores de la lista, el bucle termina.

Es decir que Python asignará automáticamente a la variable i los valores 0, 1, 2, 3 y 4 en cada iteración, imprimiendo "Hola" cada vez. Una vez que se han utilizado todos los valores de la lista, el bucle termina.

La lista en este programa se representa como [0, 1, 2, 3, 4]. Observa que la lista está entre corchetes. Estos son los que te indican visualmente que se trata de una lista en Python, y no de otra estructura de datos. Ya profundizaremos este tema más adelante.

Como dijimos, al ejecutar este código en Python, obtenemos el resultado deseado: el programa saluda 5 veces. Sin embargo, aunque funciona, debemos considerar si este es el enfoque más eficiente y escalable.

¡Para pensar!

¿Qué piensas de este código?

Python
for i in [0, 1, 2, 3, 4]:
    print("Hola")

¿Es la mejor manera de resolver este problema?

La clave está en pensar en casos límites (corner cases) o casos extremos (extreme cases) que pongan a prueba la calidad del código.

Luego de reflexionar, mira mi análisis.

Haz clic aquí para ver el análisis

Este código funciona correctamente, pero no es la mejor manera de resolver el problema.

Imagina que en lugar de 5 saludos, necesitamos imprimir 100 saludos. ¿Escribirías manualmente una lista de 100 números? ¿O sería más eficiente utilizar una función que genere automáticamente una secuencia de números por ti, durante el tiempo de ejecución del programa?