En programación, frecuentemente necesitamos ejecutar un bloque de instrucciones varias veces. A esto se le conoce como estructura repetitiva, bucle o ciclo.
Estas estructuras nos permiten repetir automáticamente una acción un número determinado de veces o mientras se cumpla una condición.
Python ofrece dos tipos principales de estructuras repetitivas:
while: para repeticiones basadas en
condiciones.for: para repeticiones sobre secuencias o
rangos definidos.Más adelante exploraremos a fondo el bucle for.
Ahora nos enfocaremos en while.
El bucle while se utiliza cuando no sabemos
con certeza cuántas veces se repetirá el bloque de código, sino que dependerá
del cumplimiento de una condición lógica.
while condición:
# Bloque de código que se ejecuta mientras la condición sea verdadera
contador = 1
while contador <= 5:
print(contador)
contador += 1
contador <= 5 se evalúa antes de
cada iteración.True, se ejecuta el bloque.
False),
el bucle termina.while,
donde la cantidad de repeticiones depende de una evaluación lógica.for, cuando
conocemos el número exacto de repeticiones.Un bucle infinito ocurre cuando la condición nunca se vuelve falsa, lo que hace que el programa repita indefinidamente. Ejemplo:
while True:
print("Esto nunca termina...")
Evita esto asegurándote de que algo dentro del bucle eventualmente cambie el valor de la condición.
Python permite usar else junto con
while. El bloque else se ejecuta solo si el bucle termina
de forma natural (es decir, sin break).
x = 3
while x > 0:
print(x)
x -= 1
else:
print("El bucle terminó correctamente.")
Si dentro del while hubiera un break,
el bloque else
no se ejecutaría.
Si el cuerpo del bucle es simple, puede escribirse en una sola línea:
x = 5
while x > 0: x -= 1; print(x)
Sin embargo, esta forma reduce la legibilidad y no es recomendada para código complejo.
Un bucle puede contener dentro de sí otro bucle. Esto se llama bucle anidado, y se utiliza para generar combinaciones o trabajar con estructuras de datos múltiples.
i = 0
while i <= 2:
j = 0
while j <= 2:
print(i, j)
j += 1
i += 1
Este código imprime todas las combinaciones posibles de números del 0 al 2.
altura = 5
nivel = 1
while nivel <= altura:
print(" " * (altura - nivel) + "*" * (2 * nivel - 1))
nivel += 1
Este código imprime un árbol de Navidad usando espacios y asteriscos.
Python proporciona instrucciones especiales para modificar el flujo de ejecución dentro de un bucle:
Termina el bucle inmediatamente, sin importar si la condición aún es verdadera.
x = 10
while x > 0:
print(x)
if x == 5:
break
x -= 1
print("Bucle interrumpido.")
Salta el resto del código en la iteración actual y continúa con la siguiente.
x = 10
while x > 0:
x -= 1
if x == 5:
continue
print(x)
No hace nada. Es útil como marcador temporal para mantener la sintaxis válida.
x = 10
while x > 0:
if x == 5:
pass # Aquí se podría colocar código en el futuro
print(x)
x -= 1
while eventualmente será falsa, a menos que busques un bucle infinito.break con cuidado: puede hacer el código
difícil de entender si no está bien justificado.else si necesitas detectar cuándo un
bucle ha finalizado normalmente.