Control de la ejecución de bucles con interrupción y continuación

Completados

Note

Consulte la pestaña Texto e imágenes para obtener más detalles.

Aunque los bucles están diseñados para repetir un bloque de código, a veces necesita un control más pormenorizado sobre cómo se ejecuta el bucle. Por ejemplo, es posible que quiera salir de un bucle antes o omitir determinadas iteraciones sin detener el bucle por completo.

Python proporciona control preciso sobre la ejecución de bucles con dos instrucciones: break y continue.

Break: salir del bucle antes de tiempo

La break instrucción finaliza inmediatamente el bucle independientemente de las condiciones. Indica a Python dejar de ejecutar el bucle y pasar a la siguiente línea de código después del bloque de bucle. Por ejemplo:

for count in range(10):
    if count == 5:
        break
    print(count)

print("Loop ended.")

Salida:

0
1
2
3
4
Loop ended.

El orden de las líneas importa. La break instrucción debe aparecer después de la condición que desea comprobar, pero antes del código que desea omitir. En el ejemplo anterior, el bucle se detiene antes de imprimir 5.

Continuar: vaya a la siguiente iteración.

La continue instrucción indica a Python omitir el resto del código debajo de él e ir inmediatamente a la siguiente iteración del bucle. Por ejemplo, es posible que quiera omitir un número determinado en una secuencia:

for count in range(6):
    if count == 3:
        continue
    print(count)

Salida:

0
1
2
4
5

En este ejemplo, la instrucción continue obliga a Python a abandonar la línea print() de abajo y pasar a la siguiente iteración del bucle. Esta instrucción es útil cuando desea omitir determinadas iteraciones sin detener todo el bucle.

Administración de bucles while con break

Ambas palabras clave funcionan de la misma manera en bucles while. Combinar un bucle while con una instrucción break es un patrón habitual para gestionar entradas de usuario impredecibles.

Por ejemplo, es posible que quiera seguir ejecutando código hasta que el usuario escriba una palabra específica para salir:

while True:
    user_input = input("Type 'exit' to stop the loop: ")
    if user_input.lower() == "exit":
        break
    print(f"You entered: {user_input}")

print("Goodbye!")

while True crea un bucle que se ejecutaría para siempre:break es la única manera de salir de él. Este patrón permite solicitar datos al usuario repetidamente y salir de forma elegante cuando este indique explícitamente que desea detenerse.

Uso de continue en bucles while

Usar continue en un bucle while requiere prestar mucha atención a la condición del bucle. Si usa continue sin modificar la condición, puede crear un bucle infinito. Por ejemplo:

current_slot = 0

while current_slot < 5:
    current_slot += 1  # CRUCIAL: Increment happens right at the start of the lap

    if current_slot == 3:
        print(f"Skipping item slot {current_slot}.")
        continue  # Aborts the rest of this lap and jumps back to the top

    # This processing code is skipped when current_slot is 3
    print(f"Successfully processed item in slot {current_slot}.")

print("Inventory scan complete!")

En este ejemplo, el bucle incrementa current_slot al inicio de cada iteración. Cuando alcanza 3, la continue instrucción omite el código de procesamiento y vuelve a la parte superior del bucle. Si la línea de incremento se colocaba después de continue, el bucle nunca alcanzaría 5 y se ejecutaría para siempre.

Al usar continue en un while bucle, asegúrese siempre de actualizar la condición antes de la continue instrucción para evitar crear un bucle infinito.

Uso de else con bucles

Cuando un for bucle o while se completa normalmente (sin presionar una break instrucción), puede usar un else bloque para ejecutar código una vez finalizado el bucle. Por ejemplo:

color = "blue"

for i in range(3):
    user_input = input("Guess my favorite color: ")
    if user_input.lower() == color:
        print("You guessed it!")
        break
else:
    print(f"Sorry, the correct answer is {color}.")