Controlo da execução do ciclo com quebra e continuação

Concluído

Observação

Consulte a guia Texto e imagens para obter mais detalhes!

Embora os loops sejam desenhados para repetir um bloco de código, por vezes é necessário um controlo mais detalhado sobre a execução do loop. Por exemplo, podes querer sair de um loop mais cedo ou saltar certas iterações sem parar o loop completamente.

Python dá-te controlo preciso sobre a execução de loops com duas instruções: break e continue.

Break — sair do loop mais cedo

A break afirmação termina imediatamente o ciclo, independentemente das condições. Diz ao Python para parar de executar o ciclo e passar para a linha de código seguinte ao bloco do ciclo. Por exemplo:

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

print("Loop ended.")

Saída:

0
1
2
3
4
Loop ended.

A ordem das linhas importa. A break instrução deve vir depois da condição que queres verificar, mas antes do código que queres saltar. No exemplo acima, o ciclo para antes de imprimir 5.

Continuar — saltar para a próxima iteração

A instrução continue indica ao Python para ignorar o resto do código que se segue e passar imediatamente para a iteração seguinte do ciclo. Por exemplo, pode querer saltar um certo número numa sequência:

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

Saída:

0
1
2
4
5

Neste exemplo, a continue instrução obriga o Python a abandonar a print() linha abaixo e a saltar para a próxima iteração do ciclo. Esta afirmação é útil quando se quer ignorar certas iterações sem parar todo o ciclo.

Gerir ciclos while com break

Ambas as palavras-chave funcionam da mesma forma nos ciclos while. Combinar um while ciclo com uma break instrução é um padrão comum ao lidar com entradas imprevisíveis do utilizador.

Por exemplo, pode querer continuar a executar código até o utilizador escrever uma palavra específica para sair:

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 cria um ciclo que se repetiria para sempre—break é a única forma de sair dele. Este padrão permite-lhe pedir ao utilizador repetidamente e de forma elegante para sair quando ele quiser explicitamente parar.

Usar continue em ciclos while

Usar continue dentro de um while loop requer atenção cuidadosa ao estado do loop. Se usares continue sem modificar a condição, podes criar um ciclo infinito. Por exemplo:

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!")

Neste exemplo, o ciclo incrementa current_slot no início de cada iteração. Quando chega a 3, a continue instrução ignora o código de processamento e volta ao topo do ciclo. Se a linha de incremento fosse colocada depois do continue, o loop nunca chegaria a 5 e continuaria para sempre.

Ao usar continue num ciclo while, certifique-se sempre de atualizar a sua condição antes da instrução continue para evitar a criação de um ciclo infinito.

Utilizar else com ciclos

Quando um ciclo for ou while termina normalmente (sem encontrar uma instrução break), pode usar um bloco else para executar código depois de o ciclo terminar. Por exemplo:

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}.")