Cómo detener un bucle While en Python

Python proporciona tres formas de detener un bucle while:

  1. La condición del bucle while se comprueba una vez por iteración. Si se evalúa como False, el programa finaliza el bucle y procede con la primera instrucción después de la construcción del bucle.
  2. La palabra clave break termina un bucle inmediatamente. El programa procede con la primera instrucción después de la construcción del bucle.
  3. La palabra clave continue termina sólo la iteración actual, pero no todo el bucle. El programa procede con la primera instrucción en el cuerpo del bucle.

Puedes ver cada uno de estos tres métodos para terminar un bucle while en el siguiente gráfico:

How to Stop a While Loop in Python
Figura: Terminar un bucle while mediante (a) la condición del bucle, (b) la palabra clave break, o (c) la palabra clave continue.

Para ejemplificar estos métodos, aprenderás a usar cada uno de ellos para lograr lo mismo: eliminar el primer carácter de una cadena hasta que sólo queden 5 elementos.

English Version of Article

También puedes ver mi vídeo explicativo a medida que avanzas en el artículo:

Método 1: Condición del bucle While

La forma más pitónica de terminar un bucle while es utilizar la condición while que sigue inmediatamente después de la palabra clave while y antes de los dos puntos, tal y como while <condition>: <body>. Si la condición se evalúa como False, el programa procede con la siguiente instrucción después de la construcción del bucle. Esto termina inmediatamente el bucle.

Aquí tenemos un ejemplo que muestra cómo el bucle while termina tan pronto como una cadena dada consta de 5 o menos caracteres. En cada iteración, se reduce la longitud de la cadena en la variable s en uno mediante el rebanado de la cadena, por lo que el bucle acabará en algún momento, sin importar la longitud inicial de la cadena.

s = 'hello world'

while len(s) > 5:
    s = s[1:]

print(s)
# world

Método 2: Palabra clave “break”

Si el programa ejecuta una instrucción con la palabra clave break, el bucle termina inmediatamente. No se ejecuta ninguna otra instrucción en el cuerpo del bucle y el programa procede con la primera instrucción después de la construcción del bucle. En la mayoría de los casos, usarías la palabra clave break en un constructo if para decidir dinámicamente si un bucle debe terminar, o no.

En el siguiente ejemplo, creamos una cadena con 11 caracteres e introducimos un bucle while indefinido con una condición de bucle que siempre se cumple (while True). Si no terminaras el bucle prematuramente en el cuerpo del bucle, Python ejecutaría este código para siempre.

s = 'hello world'

while True:
    if len(s) > 5:
        s = s[1:]
    else:
        break

print(s)
# world

Afortunadamente, se añade un constructo if que contiene la palabra clave break en la rama else. Tan pronto como la condición if se evalúe como False, la rama else se procesará y la sentencia break se ejecutará: el bucle termina.

Solo una cadena con 5 o menos caracteres hace que la condición if se evalúe como False, por lo que el bucle termina tan pronto como s contenga la cadena 'world'.

Método 3: Palabra clave “continue”

La palabra clave continue termina sólo la iteración actual, pero no todo el bucle. El programa procede con la primera instrucción en el cuerpo del bucle. El uso más común de continue es evitar la ejecución de ciertas partes del cuerpo del bucle, restringido por una condición marcada en un constructo if.

Aquí hay un ejemplo:

s = 'hello world'

while len(s) > 5:
    s = s[1:]
    if len(s) > 5:
        continue
    print(s)

# world

Empiezas con la misma cadena 'hello world'. Python comprueba si la cadena tiene más de 5 caracteres en la condición del bucle while, que es el caso.

Luego, entra en el cuerpo del bucle y esencialmente reduce la longitud de la cadena en uno. Ahora, comprueba si len(s) > 5, lo que sigue siendo True mientras la cadena tenga más de 5 caracteres. En estos casos, se ejecuta la instrucción continue y Python finaliza inmediatamente la iteración actual y procede con la condición de bucle mientras len(s) > 5.

Sin embargo, tan pronto como la cadena s conste de sólo 5 caracteres 'world', la rama if no se ejecuta y la sentencia continue se omite. En su lugar, imprime la cadena en la consola y comprueba la condición del bucle, que no se cumple, por lo que abandona el bucle.

Aunque el cuerpo del bucle se ha ejecutado varias veces, la instrucción print() se ejecutó una sola vez.

Chuleta de palabras clave de Python

Puedes conocer las palabras clave más importantes de Python en esta breve chuleta -¡si eres como yo, también te apasionarán las chuletas!

Puedes descargarlo desde aquí:

Resumen

Has aprendido tres formas de terminar un bucle while.

Método 1: La condición del bucle while se comprueba una vez por iteración. Si se evalúa como False, el programa finaliza el bucle y procede con la primera instrucción después de la construcción del bucle.

Método 2: La palabra clave break termina un bucle inmediatamente. El programa procede con la primera instrucción después de la construcción del bucle.

Método 3: La palabra clave continue termina sólo la iteración actual, pero no todo el bucle. El programa procede con la primera instrucción en el cuerpo del bucle.

Gracias por leer este tutorial: si quieres mejorar aún más tus habilidades con Python, te recomiendo que consultes mi academia gratuita de correo electrónico y descargues las lecciones y hojas de trucos gratuitas de Python aquí:

acompáñanos, es más… 🙂