Bucle for frente a bucle while en Python: cuándo usar cada uno
Ambos bucles repiten código, así que las personas principiantes a menudo se preguntan cuál elegir. La regla práctica: usa un bucle for cuando sabes lo que vas a recorrer, y un bucle while cuando esperas a que algo cambie. Cada ejemplo de abajo se ha ejecutado y la salida que se muestra es exacta.
for con range: un número conocido de veces
range(3) da 0, 1 y 2. La variable del bucle toma cada valor por turno. El final de range nunca se incluye.
for i in range(3):
print(i)Salida:
0 1 2
for sobre una lista: cada elemento
Un bucle for puede recorrer directamente una lista, una cadena de texto, un diccionario o cualquier otra cosa que puedas recorrer uno a uno. No necesitas un índice.
for part in ["wrench", "cable"]:
print(part)Salida:
wrench cable
while: hasta que algo cambie
Un bucle while comprueba su condición antes de cada vuelta. Algo dentro del bucle debe cambiar esa condición, o nunca termina. Aquí la batería baja 3 hasta que no queda suficiente, y no sabes de antemano el número de vueltas.
battery = 10
steps = 0
while battery >= 3:
battery -= 3
steps += 1
print(steps)Salida:
3
break y continue
break sale del bucle de inmediato. continue salta el resto de esta vuelta y pasa a la siguiente. Ambos funcionan en bucles for y en bucles while.
for n in range(1, 8):
if n % 2 == 0:
continue
if n > 5:
break
print(n)Salida:
1 3 5
El bucle infinito
Un bucle while cuya condición nunca se vuelve falsa se ejecuta para siempre. Si tu programa parece bloqueado, comprueba que la variable de la condición realmente cambia dentro del bucle. En este sitio, un programa que se ejecuta más de cinco segundos se detiene por ti.
Preguntas frecuentes
- ¿Se puede escribir todo bucle for como un bucle while?
- Sí, pero es más largo y más fácil de equivocarse, porque tú gestionas el contador. Prefiere for siempre que recorras una colección o un rango fijo.
- ¿Cuál es la diferencia entre break y continue?
- break termina todo el bucle. continue solo salta la vuelta actual y sigue con la siguiente.
- ¿Por qué mi bucle while nunca termina?
- La condición sigue siendo verdadera porque nada dentro del bucle cambia la variable que evalúa. Añade una línea que la acerque al final, como n -= 1.