Como usar o loop for de forma mais completa em Python
Na lição anterior, vimos como o for funciona, para que ele serve e como percorrer diferentes tipos de iteráveis. Agora é hora de dar um passo além. Vamos nos aprofundar no seu uso, explorando situações mais próximas do código real.
Você vai ver como combinar repetições com diversos outros conceitos. Alguns deles serão novos e outros já são conhecidos.
A ideia é mostrar como o for se encaixa em problemas práticos, oferecendo uma visão mais completa de como essa estrutura aparece no dia a dia em Python.
forNa prática, raramente usamos estruturas de repetição sozinhas. O mais comum é combinar o for com outros recursos, como com as estruturas condicionais if, elif e else.
Essa combinação permite tomar decisões diferentes a cada repetição do loop, dependendo do valor que está sendo analisado naquele momento.
forO padrão mais comum é usar um if dentro da repetição para lidar com os cenários possíveis:
1numeros = [1, 2, 3] 2 3for numero in numeros: 4 if numero % 2 == 0: 5 print(numero, "é par") 6 else: 7 print(numero, "é ímpar") 8 9# Saída: 10# 1 é ímpar 11# 2 é par 12# 3 é ímpar
Aqui, o que acontece é:
for percorre a lista numeros de 1 em 1 elemento.if avalia uma condição diferente.Outra situação muito comum é usar o if para filtrar valores que nos interessam:
1frutas = ["banana", "amora", "laranja", "maçã", "abacate"] 2 3for fruta in frutas: 4
Nesse caso:
frutas.Esses exemplos mostram como condições e repetições trabalham juntas. A repetição fica responsável pelo fluxo, enquanto a condição decide o que fazer em cada passo. Em Python, praticamente todo código real combina essas duas ideias: repetir e decidir.
Até agora, vimos como usar o for para percorrer todos os elementos de iteráveis, mas nem sempre queremos que ele faça isso.
breakÀs vezes, queremos parar o loop antes de percorrer todos os itens. Para isso, usamos o break:
1frutas = ["banana", "laranja", "maçã"] 2 3for fruta in frutas: 4 if fruta == "laranja"
Quando o Python encontra a fruta "laranja" na lista, o break interrompe a repetição e sai do loop imediatamente, mesmo que ainda existam elementos para percorrer.
continueO continue funciona de forma diferente. Ele interrompe apenas a iteração atual, pulando tudo que resta nela e indo para a próxima:
1frutas = ["banana", "laranja", "maçã"] 2 3for fruta in frutas: 4 if fruta == "laranja"
Nesse caso, o loop continua existindo, mas ignora apenas o item "laranja", que não é impresso. O elemento "maçã", que vem na repetição seguinte, é impresso normalmente.
passEm Python, um for não pode ficar vazio. Se, por algum motivo, você ainda não souber ou não quer implementar a lógica do loop, pode usar pass:
1for numero in range(3): 2 pass
Ele não faz nada por si só, mas evita erros ao rodar o código quando o bloco ainda está vazio durante o desenvolvimento.
else no forO for em Python pode ter um bloco else no fim dele. Esse bloco é executado quando o loop termina normalmente, sem ser interrompido por um break:
1for numero in range(3): 2 print(numero) 3else: 4 print("Loop finalizado")
Agora, veja o efeito do break:
1for numero in range(3): 2 if numero == 1: 3 break 4 print(numero)
O else não é executado quando o loop é interrompido.
Um loop pode existir dentro de outro loop. Chamamos isso de loops aninhados:
1adjetivos = ["vermelha", "grande"] 2frutas = ["maçã", "limão"] 3 4for adjetivo in adjetivos:
O loop interno é executado para cada iteração do loop externo. Entenda o que acontece:
for externo percorre cada adjetivo.adjetivo, o for interno percorre todas as frutas.adjetivo e fruta é impressa.Outra situação em que usamos loops aninhados é quando temos coleções dentro de coleções:
1loop_externo = [ 2 [1, 2, 3], 3 [4, 5, 6] 4
Acima:
for percorre cada linha: [1, 2, 3] e [4, 5, 6].for do loop interno percorre seus elementos:
[1, 2, 3], ele passa por 1, 2 e depois 3.[4, 5, 6], ele passa por 4, 5 e depois 6.Esse padrão aparece muito quando trabalhamos com tabelas, matrizes ou dados estruturados.
break em loops aninhadosCom loops aninhados, o uso do break merece atenção especial. Isso porque o break interrompe apenas o loop em que ele está inserido, e não todos os loops ao mesmo tempo.
Observe:
1loop_externo = [ 2 [1, 2, 3], 3 [4, 5, 6] 4
O que acontece nesse código:
for externo percorre cada linha do loop_externo.for interno percorre os números de cada item do loop_interno.2 é encontrado, o break interrompe apenas o loop interno onde ele está. Os números 2 e 3 não são impressos.2, todos os itens são impressos: 4, 5 e 6.continue em loops aninhadosO comportamento do continue em loops aninhados segue a mesma lógica: ele afeta apenas a repetição atual:
1loop_externo = [ 2 [1, 2, 3], 3 [4, 5, 6] 4
Aqui:
2 é encontrado, o continue pula apenas essa repetição.3 é impresso.2, todos os itens são impressos: 4, 5 e 6.forEm algumas situações você pode encontrar algo como for chave, valor in pessoa.items() e se assustar. Mas mantenha a calma! Por mais que possa parecer estranho ter duas variáveis antes do for, isso é mais simples do que parece.
Em Python, o for consegue ir além de percorrer valores simples. Quando os itens da sequência possuem mais de um valor agrupado e têm estruturas semelhantes, podemos desempacotar esses valores diretamente na primeira linha do loop.
Na prática, isso significa "abrir" cada item em partes menores e atribuir cada parte a uma variável diferente, tudo de uma vez. Veja um exemplo com uma lista de tuplas:
1pessoas = [ 2 ("Ana", 25), 3 ("Bruno", 30), 4 ("Carla"
Cada item da lista é uma tupla com dois valores. Em vez de receber a tupla inteira e acessá-la por índice (pessoas[0], pessoas[1]), o for já faz o trabalho de separar automaticamente esses valores nas variáveis nome e idade.
Isso deixa o código mais limpo, mais legível e muito mais expressivo.
Mas é preciso ter um cuidado: o número de variáveis precisa ser exatamente igual ao número de valores. Se tentarmos desempacotar mais ou menos valores do que existem, o Python gera um erro para evitar confusões silenciosas no código.
Frequentemente, dados que aparecem juntos têm significados relacionados, como vimos com as tuplas aqui em cima. Outro caso em que os dados agrupados que estão vinculados são as chaves e valores de um dicionário.
Você deve se lembrar que para acessar chaves e valores juntos, usamos o método .items(). Podemos combiná-lo com o for para trabalhar essas duas informações ao mesmo tempo:
1pessoa = {"nome": "Felipe", "jogo favorito": "xadrez"} 2 3for chave, valor in pessoa.items():
Podemos concluir que o desempacotamento no for nos ajuda a:
Esse recurso é simples, poderoso e que aparece com frequência quando lidamos com coleções mais ricas em dados.
for na práticaOs exemplos que vimos acima são apenas alguns casos em que as estruturas de repetição podem ser usadas. Há muitas outras formas de usá-las, já que elas são muito comuns.
Veja abaixo mais alguma situações em que o for pode ser usado.
Aqui, combinamos os conceitos de estrutura de repetição for com o operador aritmético /, o operador de atribuição +=, a função len() e a formação de strings:
1notas = [7.5, 8.0, 6.5, 9.0] 2soma = 0 3 4for nota in notas
Aqui, o for percorre todas as notas. Cada uma delas é somada à variável soma. Ao final do loop, usamos o valor acumulado e a quantidade de valores lidos para calcular a média.
Uma validação real de e-mail é muito mais complexa, mas podemos simplificar conferindo se ele possui os caracteres @ e ., que sempre precisam existir em qualquer endereço de e-mail:
1emails = ["ana@gmail.com", "joao#email.com", "maria@site"] 2 3for email in emails: 4 email_parece_valido = "@" in
Acima, combinamos o for com listas, operador de pertencimento in, operador lógico and, valores booleanos True e False e formatação de strings.
Às vezes, precisamos transformar dados de um formato para outro. Um caso comum é converter uma lista de tuplas (onde cada tupla representa um par chave-valor) em um dicionário.
1pares_chave_valor = [("nome", "Ana"), ("idade", 30), ("cidade", "SP")] 2 3
O for é uma das estruturas mais importantes do Python, sendo muito mais do que apenas uma simples repetição.
Ele é uma forma clara e poderosa de percorrer dados, trabalhar com sequências, aplicar regras e controlar o fluxo de execução dos nossos programas.
Dominar o for é essencial para escrever um código mais legível, organizado e fácil de manter.