Break, continue e else em loops
1. Introdução às instruções de controle de fluxo em loops
Loops são estruturas fundamentais em Python para repetir blocos de código, mas nem sempre queremos executar todas as iterações de forma linear. Três instruções especiais — break, continue e else — nos dão controle refinado sobre o fluxo de execução dentro de loops for e while.
break: interrompe o loop completamente, saindo imediatamente.continue: pula a iteração atual e vai para a próxima.else: executa um bloco de código apenas se o loop terminou normalmente (sembreak).
Essas ferramentas permitem desde buscas eficientes até validações complexas, tornando o código mais expressivo e enxuto.
2. A instrução break: interrompendo loops prematuramente
O break encerra o loop imediatamente, independentemente da condição original. É útil quando encontramos o que procurávamos ou quando uma condição de erro exige parada.
# Busca de elemento em lista
nomes = ["Ana", "Carlos", "Maria", "João", "Pedro"]
alvo = "Maria"
for nome in nomes:
if nome == alvo:
print(f"{alvo} encontrado!")
break
else:
print(f"{alvo} não está na lista.")
# Output: Maria encontrado!
Em loops aninhados, o break só sai do loop mais interno. Para sair de múltiplos níveis, precisamos de uma variável de controle ou de uma função.
# Saindo de loops aninhados
matriz = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
encontrado = False
for linha in matriz:
for elemento in linha:
if elemento == 5:
print("Elemento 5 encontrado!")
encontrado = True
break
if encontrado:
break
3. A instrução continue: pulando iterações específicas
Diferente do break, o continue não encerra o loop — apenas salta para a próxima iteração, ignorando o código restante no bloco atual.
# Filtrando números pares (pula ímpares)
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print("Números pares:")
for num in numeros:
if num % 2 != 0:
continue # pula ímpares
print(num, end=" ")
# Output: 2 4 6 8 10
Cuidado com continue em loops while: se a variável de controle não for atualizada antes do continue, podemos criar um loop infinito.
# PERIGO: loop infinito!
contador = 0
while contador < 10:
if contador % 2 == 0:
continue # nunca atualiza contador para pares!
print(contador)
contador += 1
Solução: atualizar a variável antes do continue ou usar for.
# Versão correta
contador = 0
while contador < 10:
if contador % 2 == 0:
contador += 1
continue
print(contador)
contador += 1
4. A cláusula else em loops: executando código ao final normal
O else em loops é um conceito único do Python (e de algumas linguagens derivadas). Ele executa um bloco apenas se o loop terminou sem encontrar um break. É o oposto do comportamento do else em estruturas condicionais.
# Validação de número primo com for/else
def eh_primo(numero):
if numero < 2:
return False
for i in range(2, int(numero ** 0.5) + 1):
if numero % i == 0:
print(f"{numero} é divisível por {i}")
break
else:
print(f"{numero} é primo!")
return True
return False
eh_primo(17) # 17 é primo!
eh_primo(15) # 15 é divisível por 3
O else não é executado quando o break ocorre. Isso permite padrões elegantes de "busca com confirmação".
5. Combinações práticas: break + else e continue + else
Padrão de busca com confirmação
# Verificar se todos os elementos atendem a uma condição
dados = [10, 20, 30, 40, 50]
for valor in dados:
if valor > 100:
print("Valor muito alto encontrado!")
break
else:
print("Todos os valores estão dentro do limite.")
# Output: Todos os valores estão dentro do limite.
Usando continue com else para relatórios parciais
# Processamento com relatório
transacoes = [100, -50, 200, -30, 0, 150]
processadas = 0
for valor in transacoes:
if valor == 0:
print("Transação inválida ignorada.")
continue
if valor < 0:
print(f"Estorno de R$ {abs(valor)} processado.")
else:
print(f"Depósito de R$ {valor} processado.")
processadas += 1
else:
print(f"Total de {processadas} transações processadas com sucesso.")
Sistema de login com tentativas limitadas
# Sistema de login com break + else
senha_correta = "python123"
tentativas_maximas = 3
for tentativa in range(1, tentativas_maximas + 1):
senha = input(f"Tentativa {tentativa}/{tentativas_maximas}: Digite a senha: ")
if senha == senha_correta:
print("Acesso concedido!")
break
print("Senha incorreta.")
else:
print("Conta bloqueada por excesso de tentativas.")
6. Boas práticas e armadilhas comuns
Evitando código difícil de ler
- Múltiplos
breakecontinuepodem tornar o fluxo confuso. Considere refatorar em funções menores. - Prefira
forcomelsea loopswhilecom flags complexas.
Diferenças entre Python e outras linguagens
- Em C/Java,
elseem loops não existe — usa-se flags booleanas. - Em Python, o
elsedo loop é executado mesmo se o loop nunca iterar (ex:for i in []: ... else: print("vazio")).
Quando usar break/continue vs. variáveis de controle
- Use
breakpara saídas antecipadas claras. - Use
continuepara pular casos específicos sem aninharif. - Evite
breakem loops muito longos — prefira funções comreturn.
7. Exemplos do mundo real e exercícios
Processamento de arquivos: parando ao encontrar erro
# Leitura de arquivo com parada em erro
def ler_arquivo_seguro(caminho):
with open(caminho, 'r') as arquivo:
for linha_num, linha in enumerate(arquivo, 1):
try:
valor = int(linha.strip())
print(f"Linha {linha_num}: {valor}")
except ValueError:
print(f"Erro na linha {linha_num}: dado inválido")
break
else:
print("Arquivo processado com sucesso!")
Validação de dados de formulário com continue
# Validação de formulário
campos = {
"nome": "João",
"email": "",
"idade": "25",
"telefone": "123-456"
}
for campo, valor in campos.items():
if not valor:
print(f"Campo '{campo}' está vazio. Ignorando...")
continue
if campo == "email" and "@" not in valor:
print(f"Email inválido no campo '{campo}'.")
continue
print(f"{campo}: {valor} validado.")
Mini desafio: implementar um menu interativo
# Menu interativo com loops
def menu():
opcoes = {
"1": "Ver saldo",
"2": "Depositar",
"3": "Sacar",
"4": "Sair"
}
while True:
print("\n--- MENU ---")
for chave, descricao in opcoes.items():
print(f"{chave}. {descricao}")
escolha = input("Escolha uma opção: ")
if escolha == "4":
print("Encerrando...")
break
elif escolha == "1":
print("Saldo: R$ 1000,00")
elif escolha == "2":
print("Depósito realizado!")
elif escolha == "3":
print("Saque realizado!")
else:
print("Opção inválida. Tente novamente.")
continue
Dominar break, continue e else em loops transforma a maneira como você controla o fluxo dos seus programas Python, permitindo código mais limpo e eficiente.
Referências
- Documentação oficial Python: Instruções break e continue — Referência completa sobre break, continue e else em loops, com exemplos básicos.
- Real Python: Python "while" Loops — Tutorial aprofundado sobre loops while, incluindo break, continue e else com exemplos práticos.
- GeeksforGeeks: Python break, continue and pass Statements — Explicação detalhada com exemplos comparativos entre break, continue e pass.
- Programiz: Python break and continue — Tutorial interativo com diagramas de fluxo para break e continue em loops for e while.
- W3Schools: Python Break and Continue — Guia introdutório com exemplos simples e exercícios práticos sobre break e continue.