← Todas las guías

01 · BUCLES

Cómo funcionan for y range() en Python

Un for toma los elementos de un iterable, uno a uno. En cada vuelta asigna el siguiente elemento a la variable del bucle y ejecuta su cuerpo.

for i in range(6):
    print(i)
Explorar el ejemplo en Traza ↗

¿Qué valores produce range(6)?

Produce 0, 1, 2, 3, 4 y 5. El límite final, 6, queda fuera. Aunque aquí lo dibujamos como casillas, range es una secuencia de números, no una lista creada en memoria.

  1. El primer valor se asigna a i: ahora vale 0.
  2. Se ejecuta print(i).
  3. El bucle toma el siguiente valor y repite el cuerpo.
  4. Después del 5 no quedan valores y el programa continúa tras el bucle.

Inicio, fin y salto

range(2, 8, 2) produce 2, 4 y 6. range(5, 0, -1) produce 5, 4, 3, 2 y 1. El salto no puede ser cero.

Recorrer una lista o un texto

for fruta in ["pera", "uva", "kiwi"]:
    print(fruta)

for letra in "Python":
    print(letra)

fruta recibe cada fruta, y letra recibe cada carácter. La variable recibe el elemento; no tiene por qué ser su índice. En Traza, el cuadrado muestra ese valor y se coloca sobre la casilla correspondiente.

Un error frecuente

Para acceder a los elementos de una lista por posición, el último índice válido es len(lista) - 1. range(len(lista)) produce precisamente sus índices válidos. Si la colección está vacía, el cuerpo no se ejecuta.