Bucles infinitos y break
A veces no se sabe si hay que terminar un bucle hasta que se ha recorrido la mitad del cuerpo del mismo. En ese caso se puede crear un bucle infinito a propósito y usar la sentencia break para salir de él cuando se desee.
El bucle siguiente es, obviamente, un bucle infinito, porque la expresión lógica de la sentencia while siempre es verdadera.
n = 10
while True:
print(n, end=' ')
n = n - 1
print('¡Terminado!')
Si cometes el error de ejecutar este código, aprenderás rápidamente cómo detener un proceso de Python bloqueado por el sistema, o tendrás que localizar dónde se encuentra el botón de apagado de tu equipo. Este programa funcionará para siempre, o hasta que la batería del equipo se agote, ya que la expresión lógica al principio del bucle siempre es verdadera.
A pesar de que este es un caso de bucle infinito inútil, se puede usar ese diseño para construir bucles útiles, siempre que se tenga precaución de añadir código en el cuerpo del bucle para salir explícitamente, usando break cuando se alcance la condición de salida.
Por ejemplo, supón que quieres recoger entradas de texto de usuario hasta que escriba fin. Podrías escribir:
while True:
linea = input("> ")
if linea == "fin":
break
print(linea)
print("¡Terminado!")
La condición del bucle es True, lo cual es verdadero siempre, así que el bucle se repetirá hasta que se ejecute la sentencia break.
Cada vez que se entra en el bucle, se le pide texto al usuario. Si el usuario escribe fin, la sentencia break hará que se salga del bucle. En cualquier otro caso, el programa repetirá cualquier cosa que el usuario escriba y volverá al principio del bucle. Este es un ejemplo de su funcionamiento:
> hola a todos
hola a todos
> terminé
terminé
> fin
¡Terminado!