Python do Zero: loops com for e while
Domine a repetição de código com for, while, break e continue.
O que são loops e por que usar
Loops (ou laços de repetição) são estruturas fundamentais em qualquer linguagem de programação. Eles permitem que você execute um bloco de código várias vezes sem precisar reescrevê-lo manualmente. Imagine que você precisa exibir os números de 1 a 1000 — sem loops, seriam necessárias mil linhas de código. Com um loop, bastam duas ou três linhas.
Em Python, existem dois tipos principais de loop: o for e o while. Vamos explorar cada um deles em detalhes.
for com range()
O for é o loop mais utilizado em Python. Combinado com a função range(), ele permite repetir um bloco de código um número determinado de vezes.
# Exibindo numeros de 0 a 4
for i in range(5):
print(i)
A função range() aceita até três argumentos: início, fim e passo.
# De 1 ate 10
for i in range(1, 11):
print(i)
# De 0 ate 20, de 2 em 2 (numeros pares)
for i in range(0, 21, 2):
print(i)
# Contagem regressiva
for i in range(10, 0, -1):
print(i)
print("Fogo!")
for iterando em listas e strings
Uma das grandes forças do Python é a capacidade de iterar diretamente sobre coleções como listas, tuplas e strings, sem precisar de índices.
# Iterando sobre uma lista
frutas = ["manga", "banana", "uva", "abacaxi"]
for fruta in frutas:
print(f"Eu gosto de {fruta}")
Com strings, cada caractere é acessado individualmente:
# Iterando sobre uma string
nome = "Python"
for letra in nome:
print(letra)
Também é possível iterar sobre dicionários:
# Iterando sobre um dicionario
notas = {"Maria": 8.5, "Pedro": 7.0, "Ana": 9.2}
for aluno, nota in notas.items():
print(f"{aluno} tirou {nota}")
while loop
O while repete um bloco de código enquanto uma condição for verdadeira. É útil quando você não sabe de antemão quantas vezes o loop precisa executar.
# Contando ate 5
contador = 1
while contador <= 5:
print(contador)
contador += 1
Cuidado com loops infinitos! Sempre garanta que a condição vai se tornar falsa em algum momento.
# Pedindo entrada do usuario ate ele digitar "sair"
resposta = ""
while resposta != "sair":
resposta = input("Digite algo (ou 'sair' para encerrar): ")
print(f"Voce digitou: {resposta}")
break e continue
O break interrompe o loop imediatamente, enquanto o continue pula para a próxima iteração.
# break: para o loop quando encontra o numero 5
for i in range(10):
if i == 5:
print("Encontrei o 5, parando!")
break
print(i)
# continue: pula os numeros pares
for i in range(10):
if i % 2 == 0:
continue
print(f"{i} e impar")
Combinando while com break para validação de entrada:
# Validando entrada do usuario
while True:
idade = input("Digite sua idade: ")
if idade.isdigit() and int(idade) > 0:
print(f"Idade registrada: {idade}")
break
print("Por favor, digite um numero valido.")
enumerate() e zip()
A função enumerate() retorna o índice e o valor de cada elemento durante a iteração. Muito útil quando você precisa saber a posição do item.
# enumerate: indice + valor
linguagens = ["Python", "JavaScript", "Go", "Rust"]
for indice, linguagem in enumerate(linguagens):
print(f"{indice + 1}. {linguagem}")
Já o zip() permite iterar sobre duas ou mais listas ao mesmo tempo:
# zip: iterando em paralelo
nomes = ["Alice", "Bruno", "Carla"]
idades = [25, 30, 22]
cidades = ["Recife", "Salvador", "Fortaleza"]
for nome, idade, cidade in zip(nomes, idades, cidades):
print(f"{nome} tem {idade} anos e mora em {cidade}")
List comprehension
List comprehension é uma forma concisa e elegante de criar listas usando loops em uma única linha. É um recurso muito poderoso do Python.
# Forma tradicional
quadrados = []
for n in range(1, 11):
quadrados.append(n ** 2)
# Com list comprehension
quadrados = [n ** 2 for n in range(1, 11)]
print(quadrados)
Também é possível adicionar condições:
# Somente numeros pares ao quadrado
pares_quadrado = [n ** 2 for n in range(1, 21) if n % 2 == 0]
print(pares_quadrado)
# Filtrando palavras com mais de 4 letras
palavras = ["sol", "estrela", "lua", "constelacao", "ceu"]
longas = [p for p in palavras if len(p) > 4]
print(longas)
Exemplo prático: jogo de adivinhação
Vamos juntar tudo o que aprendemos em um pequeno jogo de adivinhação. O programa escolhe um número aleatório e o jogador tenta adivinhar.
import random
numero_secreto = random.randint(1, 50)
tentativas = 0
max_tentativas = 7
print("=== Jogo de Adivinhacao ===")
print(f"Estou pensando em um numero entre 1 e 50.")
print(f"Voce tem {max_tentativas} tentativas. Boa sorte!\n")
while tentativas < max_tentativas:
chute = input(f"Tentativa {tentativas + 1}/{max_tentativas}: ")
if not chute.isdigit():
print("Digite apenas numeros!\n")
continue
chute = int(chute)
tentativas += 1
if chute == numero_secreto:
print(f"\nParabens! Voce acertou em {tentativas} tentativa(s)!")
break
elif chute < numero_secreto:
print("Muito baixo! Tente um numero maior.\n")
else:
print("Muito alto! Tente um numero menor.\n")
else:
print(f"\nVoce perdeu! O numero era {numero_secreto}.")
print("Obrigado por jogar!")
Conclusão
Loops são ferramentas essenciais para qualquer programador Python. Neste artigo, você aprendeu:
- for com
range()para repetições com número definido - for para iterar sobre listas, strings e dicionários
- while para repetições baseadas em condições
- break e continue para controlar o fluxo dos loops
- enumerate() e zip() para iterações mais elegantes
- List comprehension para criar listas de forma concisa
Pratique bastante com esses conceitos, pois eles aparecem em praticamente todo código Python que você vai escrever. No próximo artigo, vamos explorar funções em Python!