Saltar al contenido principal
eLearner.app
Módulo 2 · Lección 1 de 45/36 en el curso~10 min
Lecciones del módulo (1/4)

Bucles for y range

El bucle for en Python se usa para iterar sobre una secuencia de elementos: una lista, una cadena, un rango, un diccionario... cualquier cosa que sea "iterable".

Python
parole = ["ciao", "mondo", "!"]
for p in parole:
    print(p)
# ciao
# mondo
# !

El patrón es siempre el mismo: for <variable> in <iterable>: seguido del bloque indentado que se ejecutará una vez por cada elemento.

range(...): generación de intervalos enteros

range produce una secuencia perezosa (lazy) de enteros. Tres formas:

Python
range(5)         # 0, 1, 2, 3, 4
range(2, 6)      # 2, 3, 4, 5
range(0, 10, 2)  # 0, 2, 4, 6, 8     (step)
range(5, 0, -1)  # 5, 4, 3, 2, 1     (negative step)

range es exclusivo en el extremo derecho, al igual que slice. Es un objeto perezoso: no asigna memoria para todos los números, los produce uno a la vez.

Python
totale = 0
for i in range(1, 11):
    totale = totale + i
totale  # 55  (1+2+...+10)

Iterar con un índice: enumerate

Cuando necesitas el elemento y su índice juntos, usa enumerate:

Python
parole = ["ciao", "mondo", "!"]
for i, p in enumerate(parole):
    print(i, p)
# 0 ciao
# 1 mondo
# 2 !

enumerate produce pares (index, value) que asignamos directamente a dos variables mediante desempaquetado de tuplas (tuple unpacking).

Iterar dos secuencias en paralelo: zip

Python
nomi = ["Ada", "Linus", "Grace"]
anni = [36, 54, 79]
for n, a in zip(nomi, anni):
    print(f"{n} ha {a} anni")

zip se detiene en la secuencia más corta.

range() y la pereza de Python

En Python, la función range() no asigna una lista real en memoria: devuelve un generador perezoso (lazy generator) que produce números uno a la vez a medida que se solicitan (por ejemplo, en un bucle for). Esto permite iterar sobre millones de enteros sin inflar la RAM. Para inspeccionar los valores de un rango como una lista, puedes convertirlo explícitamente con list(range(5)).

Pruébalo tú

Ejercicio#python.m2.l1.e1
Intentos: 0Cargando...

Calcula la suma de los números del 1 al 100 (inclusive) usando un bucle for sobre range(...), asigna la suma a `total` y evalúala.

Cargando editor...
Mostrar pista

range(1, 101) genera 1, 2, ..., 100 (exclusivo en la derecha).

Solución disponible después de 3 intentos

Ejercicio de repaso

Ejercicio#python.m2.l1.e2
Intentos: 0Cargando...

Dada la lista `words = ['uno', 'due', 'tre']`, construye una lista `pairs` de cadenas como '0:uno', '1:due', '2:tre' usando enumerate. Evalúa `pairs`.

Cargando editor...
Mostrar pista

enumerate(words) devuelve (index, value) en cada iteración.

Solución disponible después de 3 intentos

Desafío adicional

Ejercicio#python.m2.l1.e3
Intentos: 0Cargando...

Calcula la suma de todos los números pares del 2 al 20 inclusive usando un bucle `for` sobre un `range`. Guarda la suma final en `even_sum` y evalúala.

Cargando editor...
Mostrar pista

Usa range(2, 21, 2) para iterar solo sobre enteros pares del 2 al 20.

Solución disponible después de 3 intentos