Loops são estruturas que permitem executar um bloco de código repetidamente. Eles são essenciais para automatizar tarefas, processar coleções de dados e criar programas interativos. Neste guia completo, você vai dominar os loops for e while em Python.
🎯 O Que São Loops e Por Que Usá-los?
Imagine que você precisa exibir os números de 1 a 100. Sem loops, você precisaria escrever 100 linhas de código. Com loops, você resolve em 2 linhas:
for i in range(1, 101):
print(i)
Loops são usados para:
- Processar itens de uma lista, dicionário ou arquivo
- Repetir ações até uma condição ser atendida
- Criar menus interativos
- Automatizar tarefas repetitivas
- Implementar algoritmos de busca e ordenação
🔄 O Loop for
O for é usado quando você sabe quantas vezes quer repetir ou quando está iterando sobre uma coleção:
Iterando sobre Listas
frutas = ["maçã", "banana", "laranja"]
for fruta in frutas:
print(f"Eu gosto de {fruta}")
# Saída:
# Eu gosto de maçã
# Eu gosto de banana
# Eu gosto de laranja
Usando range()
A função range() gera uma sequência de números:
# range(fim) - de 0 até fim-1
for i in range(5):
print(i) # 0, 1, 2, 3, 4
# range(início, fim) - de início até fim-1
for i in range(1, 6):
print(i) # 1, 2, 3, 4, 5
# range(início, fim, passo)
for i in range(0, 10, 2):
print(i) # 0, 2, 4, 6, 8
# Contagem regressiva
for i in range(10, 0, -1):
print(i) # 10, 9, 8, ..., 1
Iterando sobre Strings
palavra = "Python"
for letra in palavra:
print(letra)
# P, y, t, h, o, n
Usando enumerate()
Quando você precisa do índice junto com o valor:
cores = ["vermelho", "azul", "verde"]
for indice, cor in enumerate(cores):
print(f"{indice}: {cor}")
# 0: vermelho
# 1: azul
# 2: verde
# Começando de 1
for i, cor in enumerate(cores, start=1):
print(f"{i}. {cor}")
Iterando sobre Dicionários
pessoa = {"nome": "Ana", "idade": 25, "cidade": "SP"}
# Iterar pelas chaves
for chave in pessoa:
print(chave)
# Iterar pelos valores
for valor in pessoa.values():
print(valor)
# Iterar por chave e valor
for chave, valor in pessoa.items():
print(f"{chave}: {valor}")
🔁 O Loop while
O while repete enquanto uma condição for verdadeira:
contador = 0
while contador < 5:
print(f"Contador: {contador}")
contador += 1
# Contador: 0
# Contador: 1
# Contador: 2
# Contador: 3
# Contador: 4
Loop Infinito Controlado
while True:
comando = input("Digite um comando (sair para encerrar): ")
if comando == "sair":
print("Encerrando...")
break
print(f"Você digitou: {comando}")
Validação de Entrada
idade = -1
while idade < 0 or idade > 150:
idade = int(input("Digite sua idade (0-150): "))
if idade < 0 or idade > 150:
print("Idade inválida! Tente novamente.")
print(f"Sua idade é {idade} anos")
⚡ Controle de Fluxo: break, continue e else
break: Interrompe o Loop
for i in range(10):
if i == 5:
print("Encontrei o 5, parando!")
break
print(i)
# 0, 1, 2, 3, 4, Encontrei o 5, parando!
continue: Pula para Próxima Iteração
for i in range(10):
if i % 2 == 0:
continue # Pula números pares
print(i)
# 1, 3, 5, 7, 9
else em Loops
O else executa quando o loop termina normalmente (sem break):
numeros = [1, 3, 5, 7, 9]
for num in numeros:
if num % 2 == 0:
print(f"Encontrado par: {num}")
break
else:
print("Nenhum número par encontrado")
# Saída: Nenhum número par encontrado
🔀 Loops Aninhados
Um loop dentro de outro:
# Tabuada
for i in range(1, 4):
print(f"Tabuada do {i}:")
for j in range(1, 11):
print(f" {i} x {j} = {i * j}")
print()
Matriz
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
for linha in matriz:
for elemento in linha:
print(elemento, end=" ")
print()
# 1 2 3
# 4 5 6
# 7 8 9
📚 Funções Úteis para Iteração
zip(): Iterar Múltiplas Listas
nomes = ["Ana", "Bruno", "Carla"]
idades = [25, 30, 28]
for nome, idade in zip(nomes, idades):
print(f"{nome} tem {idade} anos")
# Ana tem 25 anos
# Bruno tem 30 anos
# Carla tem 28 anos
reversed(): Iterar ao Contrário
numeros = [1, 2, 3, 4, 5]
for num in reversed(numeros):
print(num) # 5, 4, 3, 2, 1
sorted(): Iterar em Ordem
numeros = [3, 1, 4, 1, 5, 9, 2]
for num in sorted(numeros):
print(num) # 1, 1, 2, 3, 4, 5, 9
# Ordem decrescente
for num in sorted(numeros, reverse=True):
print(num) # 9, 5, 4, 3, 2, 1, 1
🎮 Projetos Práticos
1. Jogo de Adivinhação
import random
numero_secreto = random.randint(1, 100)
tentativas = 0
max_tentativas = 7
print("Adivinhe o número entre 1 e 100!")
while tentativas < max_tentativas:
palpite = int(input("Seu palpite: "))
tentativas += 1
if palpite == numero_secreto:
print(f"Parabéns! Acertou em {tentativas} tentativas!")
break
elif palpite < numero_secreto:
print("Maior!")
else:
print("Menor!")
else:
print(f"Suas tentativas acabaram! Era {numero_secreto}")
2. Verificador de Números Primos
def eh_primo(n):
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
# Encontrar primos até 50
print("Números primos até 50:")
for num in range(2, 51):
if eh_primo(num):
print(num, end=" ")
# 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
3. Menu Interativo
def menu():
print("\n=== MENU ===")
print("1. Opção A")
print("2. Opção B")
print("3. Opção C")
print("0. Sair")
return input("Escolha: ")
while True:
opcao = menu()
if opcao == "1":
print("Você escolheu A")
elif opcao == "2":
print("Você escolheu B")
elif opcao == "3":
print("Você escolheu C")
elif opcao == "0":
print("Até logo!")
break
else:
print("Opção inválida")
💡 Boas Práticas
1. Prefira for Quando Possível
# Evite (while para iteração simples)
i = 0
while i < len(lista):
print(lista[i])
i += 1
# Prefira
for item in lista:
print(item)
2. Use Nomes Descritivos
# Ruim
for x in y:
print(x)
# Bom
for usuario in lista_usuarios:
print(usuario)
3. Evite Modificar Lista Durante Iteração
# Problema
numeros = [1, 2, 3, 4, 5]
for num in numeros:
if num % 2 == 0:
numeros.remove(num) # Pode pular elementos!
# Solução: usar list comprehension
numeros = [1, 2, 3, 4, 5]
numeros = [num for num in numeros if num % 2 != 0]
❌ Erros Comuns
1. Loop Infinito Acidental
# Erro: esqueceu de incrementar
i = 0
while i < 5:
print(i)
# i += 1 # Faltou isso!
# Correto
i = 0
while i < 5:
print(i)
i += 1
2. Modificar range()
# range() gera valores sob demanda, não uma lista
r = range(5)
r[0] = 10 # Erro! Não pode modificar
🚀 Próximos Passos
Agora que você domina loops, está pronto para aprender sobre listas e dicionários, que são frequentemente usados com loops. Também recomendo estudar funções para organizar seu código em blocos reutilizáveis.
Se você ainda está começando, revise o conteúdo sobre estruturas condicionais, pois loops e condicionais frequentemente trabalham juntos.
Para um aprendizado completo e estruturado, confira nosso curso de Python do zero ao avançado.
A prática leva à perfeição! Experimente criar seus próprios loops e projetos.