Iteraciones (bucles) en Python: bucles FOR (con listas, range, contadores, acumuladores, diccionarios) y bucles WHILE.

Un bucle es una estructura de control que repite un bloque de instrucciones un número limitado de veces (siempre que la programación sea correcta). Mostramos a continuación varias formas de implementar bucles en el lenguaje de programación Python.

Bucle FOR en Python

Un bucle for repite el bloque de instrucciones un número determinado de veces, indicado en su construcción. El bloque de instrucciones que se repite se llama cuerpo del bucle y cada repetición se llama iteración.

La sintaxis del bucle for en Python es la siguiente:

El elemento iterable puede ser una cadena, una lista, un range, un diccionario, etc.

Un ejemplo:

Si compilamos el código Python anterior, devolverá:

Iniciamos un bucle for con una lista de números
Iterando en elemento 1
Iterando en elemento 2
Iterando en elemento 5
Iterando en elemento 12
Iterando en elemento 10
Iterando en elemento 3
Finalizó el bucle for

En este caso, el bucle for se repite 6 veces, dado que es el número de elementos que tiene la lista.

En Python no es necesario definir la variable de control del bucle for, en el caso anterior «i».

Otro ejemplo de bucle for, ahora con una lista con cadenas de texto:

Devolverá:

Iniciamos un bucle for con una lista de cadenas de texto
Iterando en elemento España
Iterando en elemento Francia
Iterando en elemento Portugal
Iterando en elemento Italia
Iterando en elemento Alemania
Finalizó el bucle for

Python admite también iterar por todos los caracteres de una cadena de texto. Por ejemplo:

Devolverá:

Iniciamos un bucle for con un texto y su iteración por cada carácter
Iterando en elemento P
Iterando en elemento o
Iterando en elemento r
Iterando en elemento
Iterando en elemento c
Iterando en elemento a
Iterando en elemento r
Iterando en elemento á
Iterando en elemento c
Iterando en elemento t
Iterando en elemento e
Iterando en elemento r
Finalizó el bucle for

El típico bucle de un contador incremental, en Python, se puede realizar usando range. Un ejemplo:

Devolverá:

Iniciamos un bucle for con range
Iterando en elemento 0
Iterando en elemento 1
Iterando en elemento 2
Iterando en elemento 3
Finalizó el bucle for

Por supuesto, podremos obtener el valor del número de veces a iterar solicitándolo por consola al usuario. Por ejemplo:

¿Cuántas veces quiere que sume 4 + 9? 3
Iniciamos un bucle for con range y valor pedido por consola
La suma de 4 + 9 es: 13
La suma de 4 + 9 es: 13
La suma de 4 + 9 es: 13
Finalizó el bucle for

El uso de contadores y acumuladores en los bucles es muy habitual. Un ejemplo del uso de un contador en un bucle for podría ser:

Devolverá:

Iniciamos un bucle for con range y contamos las veces que se ejecuta
Iterando con 0
Iterando con 1
Iterando con 2
Finalizó el bucle for, se ejecutó 3 veces

Y un ejemplo de un acumulador, en un bucle for:

Iniciamos un bucle for con range y sumamos su iterador
Iterando con 0
Iterando con 1
Iterando con 2
Iterando con 3
Finalizó el bucle for, suma de sus iteradores: 6

Con Python, también podremos establecer el mínimo, máximo e incremento en un bucle for. Por ejemplo, para iterar desde el 4 al 8 de dos en dos:

Devolverá:

Iniciamos un bucle for con range, mínimo, máximo, intervalo
Iterando con 4
Iterando con 6
Finalizó el bucle for

Podemos comprobar que, en este caso, el incremento no es en uno, sino en dos.

Si el elemento actual es irrelevante (no lo necesitamos), podemos «suprimirlo» usando «_». Por ejemplo:

Iniciamos un bucle for con range, sin elemento actual (i)
Iterando sin elemento actual
Iterando sin elemento actual
Finalizó el bucle for

También podremos salir del bucle si lo necesitamos, usando «break». Por ejemplo:

Devolverá:

Iniciamos un bucle for con range, mínimo, máximo, intervalo y break para forzar salida
Iterando con 2
Iterando con 3
Iterando con 4
Iterando con 5
Se forzó la finalización del bucle for con break
Finalizó el bucle for

Podremos comprobar que cuando i es mayor que 5 se sale del bucle for.

También se puede añadir una iteración manual con continue en un bucle for en Python. Por ejemplo:

El ejemplo anterior mostrará por pantalla sólo los números que sean pares. Si un número no es par, pasará a la siguiente iteración con continue. El ejemplo anterior devolverá:

Iniciamos un bucle for con una lista para mostrar sólo los números pares
2 es par
8 es par
0 es par
28 es par
Finalizó el bucle for

Python también admite una estructura for especial: for … else. En este caso, si se ejecuta una sentencia break en el bucle for se ejecutará lo que haya en el else, sino se ejecuta un break no se ejecutará lo que haya en el else. Por ejemplo:

En el ejemplo anterior, cuando i > 5 se ejecutará un break, por lo que a continuación se ejecutará lo que haya en el else. Devolviendo:

Iniciamos un bucle for..else con range, mínimo, máximo, intervalo y break para forzar salida y que continúe por el else
Iterando con 2
Iterando con 3
Iterando con 4
Iterando con 5
Se forzó la finalización del bucle for con break
Finalizó el bucle for..else

Con for en Python podremos recorrer diccionarios y sus índices, por ejemplo:

Devolverá:

Iniciamos un bucle for recorriendo un diccionario y mostrando su índice
España
Francia
Italia
Portugal
Alemania
Andorra
Bélgica
Finalizó el bucle for

Por supuesto, también podemos mostrar sus valores:

Devolviendo:

Iniciamos un bucle for recorriendo un diccionario y mostrando sus valores
34
33
39
351
49
376
32
Finalizó el bucle for

Otros ejemplos de bucle for para recorrer listas:

Devolverá:

Inicio del bucle for recorriendo elmentos de lista
Verde
Azul
Rojo
Amarillo
Naranja
Marrón
Negro
Fin del bucle for

La lista anterior podríamos recorrerla de esta otra forma:

Bucle WHILE en Python

Un bucle while permite repetir la ejecución de un grupo de instrucciones mientras se cumpla una condición (mientras tenga valor True). La sintaxis del bucle while en Python es la siguiente:

La variable o variables que se usen para la condición se llamar variables de control. Estas variables deben definirse antes del bucle while y modificarse en el cuerpo del bucle.

Por ejemplo, un bucle while que muestra tres números del 0 al 2:

Devolverá:

Inicio del bucle while
Iterando en 0
Iterando en 1
Iterando en 2
Fin del bucle while

Como podemos comprobar en el ejemplo, la variable i se define con un valor antes del bucle y se le establece otro valor en el bucle, para que no sea infinito. Si ejecutáramos el ejemplo anterior sin la sentencia i += 1, se produciría un bucle infinito, el bucle no acabaría nunca.

El ejemplo anterior podría haberse programado de igual forma con un bucle for. Pero la ventaja de usar un bucle while es que la variable de control se puede modificar con mayor flexibilidad, por ejemplo:

Devolverá:

Inicio del bucle while
El valor de la variable de control en la iteración 1: 2
El valor de la variable de control en la iteración 2: 4
El valor de la variable de control en la iteración 3: 16
El valor de la variable de control en la iteración 4: 256
Fin del bucle while

En los bucles while se puede dar el caso de que nunca se acceda al bucle, por ejemplo:

En este caso, no entrará en el bucle, por lo que devolverá:

Inicio del bucle while
Fin del bucle while

El bucle while no necesita definir el número de iteraciones antes de empezar, como ocurre con el bucle for. Por ejemplo:

Si introducimos un número mayor de 0 devolverá:

Introduzca un número: 3
Inicio del bucle while
Fin del bucle while
Continuamos con otro bucle for, con número de repeticiones mayor que cero
Iteramos con bucle for, iteración 0
Iteramos con bucle for, iteración 1
Iteramos con bucle for, iteración 2
Fin del bucle for

En cambio, si introduciremos un número menor o igual a cero, nos mostrará un mensaje y volverá a preguntar un número. Esto se repetirá hasta que introduzcamos un número mayor que cero:

Introduzca un número: -1
Inicio del bucle while
Ha introducido un número negativo o cero, por favor, introduzca un número mayor que cero
Introduzca un número: