For em Sequências, Break e Continue
O que é o for em sequências?
O for não serve só com range(). Você pode percorrer qualquer sequência: listas, strings, tuplas. Com enumerate() você pega o índice é o valor ao mesmo tempo.
Para controlar o fluxo dentro do loop, use break para sair na hora e continue para pular para a próxima volta. Python ainda tem um recurso exclusivo: o else no loop, que roda quando o loop termina sem break.
Percorrendo listas e strings
Qualquer sequência funciona direto no for. Listas entregam cada item, strings entregam cada caractere:
frutas: list[str] = ["maçã", "banana", "laranja"]
for fruta in frutas:
print(f"Eu gosto de {fruta}")
# → Eu gosto de maçã
# → Eu gosto de banana
# → Eu gosto de laranja
# Strings também são sequências
for letra in "Python":
print(letra, end=" ")
# → P y t h o n
enumerate -- índice + valor
Quando você precisa saber a posição de cada item, enumerate() é o caminho:
frutas: list[str] = ["maçã", "banana", "laranja"]
for i, fruta in enumerate(frutas):
print(f"{i}: {fruta}")
# → 0: maçã
# → 1: banana
# → 2: laranja
Dá para começar de outro número com start:
alunos: list[str] = ["Ana", "Carlos", "Maria"]
for num, aluno in enumerate(alunos, start=1):
print(f"Aluno {num}: {aluno}")
# → Aluno 1: Ana
# → Aluno 2: Carlos
# → Aluno 3: Maria
break -- saindo do loop
O break encerra o loop imediatamente. Útil para buscas -- achou o que queria, sai fora:
números: list[int] = [10, 25, 37, 42, 58, 63]
for num in números:
if num == 42:
print(f"Achei o {num}!")
break
print(f"Verificando {num}...")
# → Verificando 10...
# → Verificando 25...
# → Verificando 37...
# → Achei o 42!
continue -- pulando para a próxima volta
O continue pula o resto da volta atual e vai direto para próxima iteração:
# Só números pares
for i in range(1, 11):
if i % 2 != 0:
continue
print(i, end=" ")
# → 2 4 6 8 10
break vs continue lado a lado
Visualizando a diferença:
print("--- break ---")
for i in range(1, 6):
if i == 3:
break # SAI do loop
print(i)
# → 1
# → 2
print("--- continue ---")
for i in range(1, 6):
if i == 3:
continue # PULA o 3
print(i)
# → 1
# → 2
# → 4
# → 5
else no loop -- recurso exclusivo do Python
O else no final de um for roda quando o loop termina sem break:
# Sem break → else executa
for i in range(5):
print(i, end=" ")
else:
print("\nTerminou normalmente!")
# → 0 1 2 3 4
# → Terminou normalmente!
# Com break → else NÃO executa
for i in range(5):
if i == 3:
break
print(i, end=" ")
else:
print("\nTerminou normalmente!") # não aparece!
# → 0 1 2
O uso perfeito do else e em buscas:
# Verificar se é primo
número: int = 17
for divisor in range(2, número):
if número % divisor == 0:
print(f"{número} NÃO é primo (divisivel por {divisor})")
break
else:
print(f"{número} E primo!")
# → 17 E primo!
Exercício prático
Dada uma lista de nomes, use for com enumerate e break/continue para:
- Numerar cada nome a partir de 1
- Pular nomes com menos de 4 letras (use
continue) - Parar ao encontrar um nome específico (use
break)
nomes: list[str] = ["Ana", "Bruno", "Carlos", "Ed", "Diana", "Fabio"]
# 1. enumerate com start=1
# 2. if len(nome) < 4: continue
# 3. if nome == "Diana": break
Referências
- for Statements -- documentação oficial
- enumerate() -- documentação oficial do enumerate
- Curso Python #09 - Estruturas de Repeticao (for) -- Curso em Video
Testa o que você leu
4 perguntas sobre esta aula. Errar aqui não custa nada - a explicação vem junto da correção.