Bucles en Python — for, while, break
Al finalizar este tema
Podrás crear bucles con for y while, y controlar el flujo del programa con break y continue.
Bucle for — Repetición un número determinado de veces
# Recorrer una listafruits = ["manzana", "plátano", "uva"]
for fruit in fruits: print(fruit)# manzana# plátano# uvafor variable in iterable: — Extrae y procesa uno por uno elementos de listas, cadenas de texto, rangos, etc.
range() — Generación de un rango numérico
# range(fin): desde 0 hasta fin-1for i in range(5): print(i)# 0, 1, 2, 3, 4
# range(inicio, fin)for i in range(2, 6): print(i)# 2, 3, 4, 5
# range(inicio, fin, paso)for i in range(0, 10, 2): print(i)# 0, 2, 4, 6, 8range(5) genera valores del 0 al 4 (excluyendo el 5). En casi todos los lenguajes de programación, es una convención que el "límite superior sea excluyente".
Bucle while — repite mientras la condición sea verdadera
count = 0
while count < 5: print(f"count = {count}") count += 1
# count = 0# count = 1# count = 2# count = 3# count = 4for es adecuado cuando "se sabe cuántas veces se repetirá", mientras que while es adecuado cuando "no se sabe cuándo terminará".
Precaución con bucles infinitos
# ❌ Así nunca se detendrácount = 0while count < 5: print(count) # Si olvidas count += 1 → ¡bucle infinito!
# Bucle infinito intencional (se usa en servidores, juegos, etc.)while True: command = input("> ") if command == "quit": break print(f"Entrada: {command}")Al usar un bucle while, siempre verifique "¿cuándo termina este bucle?".
break y continue
break — salida del bucle
# Termina en cuanto encuentra el 3for i in range(10): if i == 3: print("¡Encontrado!") break print(i)# 0# 1# 2# ¡Encontrado!break sale inmediatamente del bucle más cercano.
continue — omite solo esta iteración
# Omite los números paresfor i in range(6): if i % 2 == 0: continue print(i)# 1# 3# 5continue no termina el bucle; omite solo esta iteración y pasa a la siguiente.
Bucles anidados
# Tablas de multiplicar del 2 y del 3for dan in range(2, 4): print(f"--- Tabla del {dan} ---") for i in range(1, 10): print(f"{dan} x {i} = {dan * i}")Es posible anidar bucles dentro de otros bucles. Cada vez que el bucle exterior completa una iteración, el bucle interior se ejecuta completamente.
enumerate — índice y valor simultáneamente
names = ["Ana", "Luis", "Marta"]
# Cuando se necesita el índicefor i, name in enumerate(names): print(f"{i}: {name}")# 0: Ana# 1: Luis# 2: Martaenumerate() genera pares (índice, valor). Es más limpio que for i in range(len(names)).
Criterios para elegir entre for y while
| Situación | Recomendado |
|---|---|
| Recorrido de listas/rangos | for |
| Número de iteraciones fijo | for + range() |
| Iteración basada en condición | while |
| Espera de entrada del usuario | while True + break |
En la mayoría de los casos, se usará for. Se utiliza while cuando "la condición de finalización depende del estado y no de los datos".