Los ciclos for son una estructura de control
repetitiva que permite ejecutar uno o varios bloques de código un número determinado de
veces, teniendo un mayor control sobre las iteraciones. En Python, el ciclo for necesita un
valor inicial y un valor final. Además, opcionalmente puede especificarse el tamaño del paso
entre cada repetición.
En resumen, un ciclo for es ideal cuando sabemos
cuántas veces debe repetirse una acción, ya que permite definir un rango de valores por los
que iterar. A continuación, veamos un ejemplo sencillo donde el programa imprime los números
del 1 al 100:
for i in range(1, 101):
print(i)
En Python se puede iterar prácticamente todo, como cadenas, listas, tuplas y diccionarios. Por ejemplo:
for letra in "Python":
print(letra)
En este caso, la variable letra toma el valor de
cada carácter de la cadena. Más adelante explicaremos con mayor profundidad qué significa
que algo sea “iterable” o un “iterador”.
Para entender completamente cómo funciona un for en
Python, debemos comprender los conceptos de iterables e iteradores.
next().Podemos saber si un objeto es iterable usando la función
isinstance() junto con el módulo collections.abc:
from collections.abc import Iterable
print(isinstance("cadena", Iterable)) # True
print(isinstance(123, Iterable)) # False
También podemos obtener un iterador usando la función
iter():
mi_lista = [10, 20, 30]
it = iter(mi_lista)
print(next(it)) # 10
print(next(it)) # 20
print(next(it)) # 30
Si se intenta avanzar más allá del final, se lanza un error
StopIteration.
for letra in "Python"[::-1]:
print(letra)
for letra in "Python"[::2]:
print(letra)
cuadrados = [x**2 for x in range(10)]
print(cuadrados)
Una forma muy común de usar for es con
range(), que genera una secuencia de números. Puede recibir hasta tres
parámetros:
range(inicio, fin, paso)
for i in range(5): # De 0 a 4
print(i)
for i in range(5, 20, 2): # De 5 a 19, de dos en dos
print(i)
for i in range(10, 0, -1): # Cuenta regresiva
print(i)
range() no crea una lista, sino un objeto especial
que se puede convertir explícitamente en lista si lo deseamos:
list(range(5)) # [0, 1, 2, 3, 4]
Python proporciona instrucciones especiales para modificar el flujo de ejecución dentro de un bucle:
La instrucción break interrumpe completamente la
ejecución del ciclo, terminándolo en cuanto se cumple cierta condición
for numero in range(10):
if numero == 5:
break
print(numero)
En este caso, el ciclo se detiene cuando numero es igual a 5, sin imprimirlo ni continuar con las siguientes iteraciones.
La instrucción continue omite el resto del código
dentro del ciclo en la iteración actual y pasa directamente a la siguiente
for numero in range(10):
if numero == 5:
continue
print(numero)
Aquí se omite el número 5, pero el ciclo continúa normalmente con los demás valores.
La instrucción pass se utiliza cuando se requiere
una instrucción sintácticamente válida, pero que no haga nada. Puede servir como marcador de
posición para código que será escrito más adelante, o cuando queremos que no ocurra ninguna
acción ante una condición específica.
for numero in range(5):
if numero == 2:
pass
print(numero)
Aunque el número 2 cumple la condición del if, pass no afecta el ciclo y simplemente continúa.
while cuando no sabes cuántas
veces se ejecutará el bucle.for cuando sí sabes cuántas veces
debe ejecutarse.