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 02/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.

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.

O ciclo de um laço for com range de 1 a 4. A cada volta, ele pega o próximo valor e pergunta se ainda tem: se sim, executa o bloco, que imprime a tentativa, e volta ao topo para repetir; quando não tem mais, o laço termina e o programa segue.
A cada volta, a variável recebe o próximo valor de range e o bloco indentado roda de novo. Quando o range acaba, o laço termina e o programa segue.
# 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: 15

O 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.

🎮 Jogo da aula

Monte o somador

As quatro linhas somam os números de 1 a 5 e mostram o total uma única vez. Toque nas linhas na ordem certa, lembrando o mantra: antes, dentro, depois.

    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)  # 5050

    A 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.