Un bucle repite un bloque de código. Es la diferencia entre escribir 100 líneas de print y escribir 3.
El bucle for
En Python, for recorre elementos de una colección:
for fruta in ["manzana", "pera", "uva"]:
print(fruta)
# manzana
# pera
# uva
range(): el generador de secuencias
range() crea una secuencia de números — el compañero habitual de for:
for i in range(3): # 0, 1, 2 → empieza en 0, SIN incluir el 3
print(i)
for i in range(1, 4): # 1, 2, 3 → inicio incluido, fin excluido
print(i)
for i in range(0, 10, 2): # 0, 2, 4, 6, 8 → con paso de 2
print(i)
Ejemplo clásico — acumular:
total = 0
for numero in range(1, 11):
total += numero
print(total) # 55 → suma del 1 al 10
El bucle while
Repite mientras la condición sea verdadera:
contador = 0
while contador < 3:
print(f"Vuelta {contador}")
contador += 1 # ← sin esta línea: bucle infinito
¿for o while? Regla práctica: si sabes cuántas veces vas a iterar, usa for. Si dependes de una condición que puede cambiar de forma impredecible, usa while.
break y continue
for numero in range(10):
if numero == 5:
break # termina el bucle COMPLETAMENTE
print(numero) # imprime 0, 1, 2, 3, 4
for numero in range(5):
if numero == 2:
continue # salta SOLO esta iteración
print(numero) # imprime 0, 1, 3, 4
Recorrer con índice: enumerate
Cuando necesitas el elemento Y su posición:
lenguajes = ["Python", "Go", "Rust"]
for i, lenguaje in enumerate(lenguajes):
print(f"{i}: {lenguaje}")
# 0: Python
# 1: Go
# 2: Rust
Bucles anidados
Un bucle dentro de otro — para matrices y combinaciones:
for fila in range(3):
for columna in range(3):
print(f"({fila}, {columna})", end=" ")
print() # salto de línea al terminar cada fila
Errores comunes
# Bucle infinito: olvidar actualizar la condición
contador = 0
while contador < 5:
print(contador) # ¡siempre imprime 0! falta contador += 1
# Off-by-one: range no incluye el final
for i in range(5):
print(i) # imprime 0 a 4, NO 5
# range con float lanza error
range(0.5, 2.5) # TypeError: range solo acepta enteros
Resumen
forrecorre colecciones;range(a, b, paso)genera números con fin excluidowhilerepite mientras la condición seaTrue— ¡actualiza el contador!breakcorta el bucle entero;continuesalta una vueltaenumerate()te da el índice y el elemento a la vez