Módulo 9 - Repetições com for e range()
Repetindo ações: N vezes, com ou sem contador
9 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026
O que você vai aprender
- Repetir uma ação N vezes com a receita for _ in range(n).
- Decidir quando usar e quando ignorar a variável do loop.
- Combinar for com acumulador para somar sequências de números.
- Somar de 1 a 100 em três linhas e conferir com a fórmula de Gauss.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Repetindo ações: N vezes, com ou sem contador.
Os objetivos desta aula. Repetir uma ação N vezes com a receita for _ in range(n). Decidir quando usar e quando ignorar a variável do loop. Combinar for com acumulador para somar sequências de números. Somar de 1 a 100 em três linhas e conferir com a fórmula de Gauss.
Veja o essencial, parte por parte.
A receita de repetir N vezes. Para repetir uma ação N vezes: for _ in range(N), e a ação indentada dentro.
Somando com o for: o acumulador de novo. Criar o acumulador DENTRO do loop: ele zera a cada volta e o total sai errado (ou vira só o último valor).
De 1 a 100 em três linhas: a lenda de Gauss. Hora de um clássico.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
A receita de repetir N vezes
Com o range() dominado, repetir N vezes vira receita de bolo: for, uma variável, in range(N), dois pontos, e a ação indentada dentro do bloco. Só que existe uma decisão pequena e reveladora escondida aí: você vai usar o valor da variável do loop ou só precisa das voltas? Compare os dois casos.
# Caso 1: o número da volta IMPORTA
for volta in range(1, 4):
print("Tentativa", volta, "de 3")
# Caso 2: só a repetição importa
for _ in range(3):
print("Python!")No caso 1, a variável volta aparece no print. No caso 2, ninguém usa o valor, e o nome vira _.
O underline sozinho é um nome de variável válido, e a comunidade Python o adotou como sinal de descarte: quem lê for _ in range(3) entende na hora que o código quer três voltas e nada mais. Não é regra da linguagem, é etiqueta, do mesmo tipo que escrever nomes descritivos. O programa funcionaria igual com for x in range(3), mas comunicaria pior. Código bom conta a própria história.
Somando com o for: o acumulador de novo
No módulo 8 você conheceu o acumulador trabalhando com o while. Ele volta agora em dupla com o for, e a dupla rende mais: o for entrega os números prontos e o acumulador só recolhe. O padrão tem três passos que valem para qualquer soma: crie o acumulador zerado ANTES do loop, some o valor da volta DENTRO do loop, use o total DEPOIS do loop. Antes, dentro, depois.
soma = 0
for numero in range(1, 6):
soma = soma + numero
print("Peguei o", numero, "| soma até aqui:", soma)
print("Total:", soma)
# Peguei o 1 | soma até aqui: 1
# Peguei o 2 | soma até aqui: 3
# Peguei o 3 | soma até aqui: 6
# Peguei o 4 | soma até aqui: 10
# Peguei o 5 | soma até aqui: 15
# Total: 15O acumulador em câmera lenta: a cada volta, a soma cresce. O print de dentro é só para você enxergar; depois pode sair.
Rode esse exemplo no Playground e acompanhe a coluna da soma crescendo: 1, 3, 6, 10, 15. Ver o valor acumulando volta a volta vale mais que qualquer explicação em texto. Esse padrão de três passos vai reaparecer no curso inteiro: somando preços na lista de compras do módulo 10, contando vogais na próxima aula, totalizando notas no módulo 13. É um dos gestos fundamentais da programação.
De 1 a 100 em três linhas: a lenda de Gauss
Hora de um clássico. Conta-se que, no fim do século 18, um professor alemão mandou a turma somar todos os números de 1 a 100, esperando comprar uma hora de silêncio. Um menino chamado Carl Friedrich Gauss teria respondido em segundos: 5050. Ele percebeu que os números formam pares de soma constante (1 + 100, 2 + 99, 3 + 98...), todos dando 101, e são 50 pares: 50 vezes 101, 5050. A história provavelmente ganhou enfeites ao longo de dois séculos de recontagem, como toda boa lenda de sala de aula, mas a matemática dela é verdadeira e Gauss existiu de verdade: virou um dos maiores matemáticos da história.
Você, com um for e um acumulador, resolve a tarefa do professor pelo caminho da força bruta: mandar o computador somar os 100 números, um por um. É menos elegante que o truque de Gauss e infinitamente mais rápido que fazer na mão.
soma = 0
for numero in range(1, 101):
soma = soma + numero
print(soma) # 5050A tarefa de uma hora do professor, em três linhas. Repare no range(1, 101): fim exclusivo, para incluir o 100.
Dois detalhes valem nota. Primeiro, o range(1, 101): errar para range(1, 100) daria 4950, sem nenhuma mensagem de erro, e é exatamente o off-by-one da aula passada mordendo de novo. Segundo, a conferência: o resultado do loop bate com a fórmula do Gauss (50 x 101 = 5050), e conferir o programa contra um resultado conhecido é um hábito de gente grande em programação. Desafio antes do checkpoint: mude o código para somar só os números pares de 2 a 100, usando o passo do range(). A resposta tem que dar 2550.
Teste rápido
O que este código imprime? soma = 0 for n in range(1, 4): soma = soma + n print(soma)
Perguntas frequentes
- O underline (_) é obrigatório quando não uso a variável do loop?
- Não é obrigatório, é convenção. O programa roda igual com qualquer nome. O ganho é de comunicação: quem lê o _ entende de imediato que o valor não é usado. Alguns verificadores de código até avisam quando você declara uma variável e não a usa, e o _ silencia o aviso.
- Existe um jeito pronto de somar um range, sem escrever o loop?
- Existe: sum(range(1, 101)) devolve 5050 em uma linha, e você vai usar o sum() com listas no módulo 10. Aqui o loop é proposital: o objetivo da aula é treinar o padrão do acumulador, que serve para muito mais do que soma (contagem, produto, montagem de textos).
- A história do Gauss aconteceu mesmo?
- O núcleo é plausível e a matemática é verdadeira, mas os detalhes variam a cada recontagem e não há registro da cena feita na época. Historiadores tratam como anedota embelezada. Gauss, por outro lado, é real e gigante: contribuiu para álgebra, estatística, astronomia e magnetismo.
- E se eu quiser multiplicar em vez de somar? O acumulador muda?
- Muda um detalhe crucial: o valor inicial. Para soma, o neutro é 0; para multiplicação, é 1 (começar com 0 zeraria tudo). O resto do padrão é idêntico: produto = produto * numero dentro do loop. Experimente calcular 5 x 4 x 3 x 2 x 1 no Playground; o resultado é 120.
- Posso usar o acumulador para juntar textos em vez de números?
- Pode, e a próxima aula faz exatamente isso para inverter uma palavra. O valor neutro de texto é a string vazia (""), e o + vira emenda em vez de soma. O padrão antes, dentro, depois continua o mesmo.
- Repetir milhares de vezes trava o computador?
- Loops simples como os desta aula rodam milhões de voltas em segundos; range(1000000) não assusta o Python. O que pesa é o trabalho feito DENTRO de cada volta. No Playground, um print por volta em um loop gigante fica lento porque desenhar texto na tela custa caro, não porque o loop custa.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.