Contagem de 2 em 2 até 100: guia prático
O assunto parece simples demais pra precisar de um texto inteiro, mas eu vejo gente travando com isso o tempo todo em fóruns de programação e em tarefas escolares. O pedido escreva de 2 em 2 até 100 é basicamente gerar uma sequência de números pares do 2 ao 100. A questão é que todo mundo que está começando acaba cometendo os mesmos erros bobos, então vou explicar como fazer isso direito em diferentes contextos e onde as pessoas costumam errar.
escreva de 2 em 2 até 100
Vamos começar pela forma mais direta. Se você precisa disso em Python, o código é uma linha: print(list(range(2, 101, 2)))
O terceiro argumento do range é o step, ou passo. Ele diz quantos números pular a cada iteração. Colocar 101 no final em vez de 100 é um detalhe importante — como o range é exclusivo no limite superior, se você colocar 100 ele para no 98. Eu já vi isso dar erro em scripts inteiros de automação porque o desenvolvedor não percebeu que o 100 nunca aparecia na lista. Em JavaScript, a coisa é um pouco diferente:
const numeros = [];\nfor (let i = 2; i
= 100; i += 2) {\n numeros.push(i);\n} O for loop tradicional aqui deixa mais claro o que está acontecendo. O i
= 100 é explícito sobre incluir o 100, o que em JavaScript evita aquela confusão do range exclusivo do Python.
Se for numa planilha do Excel ou Google Sheets, a estratégia mais eficiente é digitar 2 na primeira célula, 4 na segunda, selecionar as duas e arrastar o quadrinho de preenchimento automático até chegar no 100. O programa detecta o padrão de incremento de 2 sozinho. Demora uns 5 segundos e não precisa de fórmula nenhuma. Já num contexto escolar, onde o exercício pede pra escrever os números manualmente no papel, a lógica é a mesma: começa no 2 e vai somando 2 repetidamente. A armadilha comum é perder o fio da meada na casa dos 60 ou 70 e começar a pular números ou repetir algum. Eu já corrigi dezenas de listas assim e quase sempre o erro acontece exatamente aí, na metade do caminho, quando a atenção enfraquece.
Problema real que eu enfrentei
Num projeto de extração de dados há alguns anos, precisei gerar sequências similares pra criar IDs de lotes em um sistema legado. O problema foi que o sistema tinha um campo varchar de tamanho fixo e, ao usar range(2, 101, 2) sem validar o tipo, os números eram convertidos como strings sem padding. Isso causou problemas de ordenação depois — o 100 ia antes do 20 porque a comparação era lexicográfica e não numérica. A solução foi formatar explicitamente com str(i).zfill(3) antes de inserir no banco. Levei duas horas pra identificar a raiz do problema porque o erro só aparecia em produção, não no ambiente de teste.
Pegadinhas e nuances que ninguém conta
A primeira coisa que começaers não percebem: contar de 2 em 2 até 100 gera exatamente 50 números. Não 51, não 49. São 50 porque (100 - 2) / 2 + 1 = 50. Essa conta é útil quando você precisa validação automática de quantos elementos uma sequência deve ter. A segunda nuance é que em algumas linguagens, como C ou C++, fazer um loop for com i
= 100 e i += 2 funciona perfeitamente com inteiros, mas se você usar floats o acúmulo de erro de ponto flutuante pode fazer o loop terminar antes ou depois do esperado. Não recomendo floats pra isso nunca.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Um erro bem comum em Python é escrever range(2, 100, 2) achando que o 100 vai entrar. Não entra. O limite superior é sempre exclusivo. Se você quer incluir o 100, tem que por 101. Isso vale pra qualquer step, não só pro 2. Em linguagens funcionais como Haskell, a maneira idiomática seria [2,4..100]. Os dois pontos com reticências dizem ao compilador pra inferir o padrão a partir dos dois primeiros elementos. É elegante mas pode gerar comportamento inesperado se você escrever [2,5..100] e esperar uma contagem diferente — o Haskell vai seguir o padrão 3 em 3 a partir do segundo elemento, não reiniciar a lógica.
Limitações do método
Contar de 2 em 2 até 100 funciona bem pra pequenos intervalos. Se você precisar escalar pra 2 em 2 até 100.000, aí a coisa muda. Gerar a lista inteira na memória de uma vez pode consumir recursos desnecessários em Python, por exemplo. Nesse caso, usar o range como iterador (sem transformar em lista) economiza memória significativamente, já que o range em Python 3 é um objeto lazy que não materializa os valores até que você realmente os solicite. Se o objetivo é apenas processar cada número sem precisar da lista completa, um loop for direto é mais eficiente do que construir uma lista e depois iterar sobre ela. A diferença é mínima pra 50 números mas se torna relevante em escalas maiores.
Também vale notar que esse padrão só funciona bem quando o início e o fim são compatíveis com o step. Se você tentar range(3, 100, 2), começa no 3 e vai até o 99 — o 100 não entra porque é par e a sequência é ímpar. É um detalhe óbvio pra quem já tem prática mas custa caro pra quem está aprendendo.
Alternativas úteis
Se você não quer depender de loops ou range, pode usar compreensão de listas em Python: [x for x in range(1, 101) if x % 2 == 0]. O resultado é idêntico mas a abordagem é mais lenta porque itera por todos os números de 1 a 100 e filtra os pares. Funciona mas não é eficiente. Evite em contextos onde performance importa. Outra opção é numpy.arange(2, 101, 2), que é útil quando você já está trabalhando com arrays numéricos e precisa da sequência integrada a operações vetorializadas. Ganho real de performance aparece só a partir de milhares de elementos.
Pra quem tá aprendendo programação e o exercício é puramente didático, escrever o loop manualmente é o caminho mais educativo. Entender como o contador avança, onde a condição de parada está e por quê, é mais valioso do que copiar uma função pronta.