O Laço da
Receita
Quando você já sabe quantas vezes vai repetir — e tem uma coleção pra percorrer item por item.
Quando você já sabe quantas vezes vai repetir — e tem uma coleção pra percorrer item por item.
Na semana passada você aprendeu o while — laço condicional. Agora vamos ao for: o laço perfeito quando você já sabe quantas voltas dar, ou quando precisa percorrer uma coleção.
Reconhecer as partes do cabeçalho do for e seu fluxo
Escrever for ascendente, descendente e sobre coleções
Percorrer listas, tuplas e strings com for
Usar enumerate() e índices negativos
Imagine seguir uma receita: a lista de ingredientes já está pronta, e você precisa passar por cada um e fazer algo:
Você não precisa contar quantos são — a coleção já tem o tamanho dela. O for faz exatamente isso: percorre cada item de uma coleção até o fim.
Usado quando o número de repetições já é conhecido (um intervalo, uma lista, uma string).
for i in range(5):
print("Volta", i)
Usado quando não sabemos o número de repetições — depende de uma condição.
resposta = ""
while resposta != "sair":
resposta = input("> ")
Hoje vamos focar no for.
O cabeçalho do for em Python tem 3 peças: a palavra for, uma variável de controle e um iterável:
for i in range(1, 4):
print("Volta", i)
# i recebe 1, depois 2, depois 3
# o bloco indentado roda 3 vezes
# (o "fim" do range NÃO entra)
Situação: imprimir "Aluno 1", "Aluno 2"… até "Aluno 10". Sabemos exatamente quantas voltas: 10. For é a escolha óbvia.
for i in range(1, 11):
print("Aluno", i)
# range(1, 11) gera 1, 2, 3, ... 10
# o 11 NÃO entra (fim exclusivo)
range(1, 11) vai até 10, não 11. Se quer ir até N, escreva range(1, N+1).
O for em Python pega cada item da lista automaticamente — você não precisa mexer com índice nem com tamanho:
ingredientes = ["farinha", "açúcar", "ovos", "leite"]
for item in ingredientes:
print("Adicionar:", item)
# Saída:
# Adicionar: farinha
# Adicionar: açúcar
# Adicionar: ovos
# Adicionar: leite
for item in lista dispensa contar tamanho. O for funciona com qualquer iterável — listas, tuplas, strings, e muito mais.
Uma string é uma sequência de caracteres. Uma tupla é uma lista que não pode ser alterada. O for percorre as duas igualzinho:
# Iterando uma STRING
nome = "PYTHON"
for letra in nome:
print(letra)
# Saída:
# P
# Y
# T
# H
# O
# N
# Iterando uma TUPLA
cores = ("vermelho", "verde", "azul")
for cor in cores:
print(cor)
# Saída:
# vermelho
# verde
# azul
Tupla usa parênteses ( ); lista usa colchetes [ ]. O for não liga — percorre ambas do mesmo jeito.
E se você precisa do índice e do valor ao mesmo tempo? enumerate() entrega os dois automaticamente:
# SEM enumerate (manual)
ingredientes = ["farinha", "açúcar", "ovos"]
i = 0
for item in ingredientes:
print(i, item)
i += 1
# Saída:
# 0 farinha
# 1 açúcar
# 2 ovos
# COM enumerate (elegante)
ingredientes = ["farinha", "açúcar", "ovos"]
for i, item in enumerate(ingredientes):
print(i, item)
# Saída:
# 0 farinha
# 1 açúcar
# 2 ovos
Em Python, índice -1 é o último elemento, -2 é o penúltimo, e assim por diante:
palavra = "PYTHON"
print(palavra[0]) # P → primeiro
print(palavra[-1]) # N → último
print(palavra[-2]) # O → penúltimo
Discutam: em qual situação prática você precisa do índice E do valor ao mesmo tempo?
Situação: dada uma lista de produtos, imprima cada um numerado a partir de 1 (não de 0). Use enumerate + ajuste do índice.
Passo a passo — abra o VS Code e digitem:
lista com 4 produtos do supermercadofor com enumerate(lista)lista = ["pão", "leite", "café", "açúcar"]
for ...:
print(...) # mostre i+1 e produto
print("Último:", lista[...])
lista = ["pão", "leite", "café", "açúcar"]
for i, produto in enumerate(lista):
print(f"{i+1} - {produto}")
print("Último:", lista[-1])
# Saída:
# 1 - pão
# 2 - leite
# 3 - café
# 4 - açúcar
# Último: açúcar
0, então usamos i+1 só para a apresentação ao usuário. E o lista[-1] pega o último sem saber o tamanho da lista.
list, tuple, str sem precisar de índice manuallista[-1] pega o último; [-2], o penúltimo, e assim por dianteDominar a função range(start, stop, step), criar passos variáveis e construir tabelas de multiplicação com loops aninhados.
Quando faz mais sentido usar for e quando faz mais sentido usar while? Dê um exemplo de cada da sua vida real.