Como escrever os números de 1 a 100 em português
Muita gente trava na hora de transformar uma sequência numérica em palavras, especialmente quando começa a contar em português e se perde nos finais de décadas. Vou explicar como funciona na prática, porque existe uma lógica por trás que a maioria não conhece. O sistema numérico em português é basicamente posicional e segue regras de composição muito previsíveis. De 1 a 9 você tem as unidades básicas: um, dois, três, quatro, cinco, seis, sete, oito, nove. Dez, onze, doze são formas especiais que não precisam ser derivadas. A partir de treze, vira coisa de somar: treze, quatorze, quinze, dezesseis, dezessete, dezoito, dezenove. O dez com o sufixo -esse/-ore aparece como padrão fixo ali.
numeros del 1 al 100
Para construir qualquer número entre 1 e 100, você pega a dezena e junta com a unidade usando a conjunção "e". O formato é sempre: [dezena] + (e) + [unidade]. A dezena sozinha já carrega o peso: vinte, trinta, quarenta, cinquenta, sessenta, setenta, oitenta, noventa, cem. Cada uma dessas formas não muda jamais, independente do que vem depois. Então 42 é quarenta mais dois = quarenta e dois. 78 é setenta mais oito = setenta e oito. 55 é cinquenta e cinco. Se a unidade for zero, você não coloca o "e": 60 é sessenta, não sessenta e zero. Isso vale para todas as casas.
No entanto, há uma pegadinha prática que eu aprendi na marra trabalhando com digitação de documentos oficiais. Quando o número está em posição final de frase ou sendo isolado como campo de formulário, a grafia pode gerar dúvidas de acentuação, especialmente com "cinqüenta" versus "cinquenta". O Acordo Ortográfico de 1990 eliminou o trema, então hoje se escreve corretamente cinquenta, sem trema. Eu passei meses corrigindo planilhas que usavam a forma antiga porque bancos e cartórios ainda geravam inconsistências nos sistemas legados deles. A solução foi simplesmente validar tudo com uma regex que rejeita trema em qualquer palavra do texto gerado. Outro detalhe que passa despercebido: onze e doze não seguem o padrão do "dez" que vem nas formas compostas. Você tem que memorizá-los separadamente. Não existe nenhuma regra etimológica que justifique o "on" e o "doz", então não adianta tentar racionalizar. São formas irregulares herdadas do latim que simplesmente precisam ser decoradas.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Quando você chega nos números compostos a partir de 21, a regra continua a mesma mas a pronúncia cobra seu preço em falantes nativos. "Vinte e um" tem um caso especial de concordância: o "um" fica invariável quando vem depois de vinte e unifica como "vinte e um" independente de gênero, mas "vinte e uma" só aparece quando o substantivo é feminino. Isso vale para todas as dezenas: trinta e uma, quarenta e uma, cinquenta e uma, sessenta e uma, setenta e uma, oitenta e uma, noventa e uma. Cem é diferente: "cem" é invariável, não existe "cema" nem "cemas". O problema real é que muitos geradores automáticos de números por extenso falham em lidar com essa variação de gênero no "um/uma". Eu já vi sistemas jurídicos produzirem "trinta e um processos" quando o correto seria "trinta e um processos" (mas também aceita "trinta e uma" em contextos específicos), e o mais grave: sistemas que geram "trinta e um" para femininos como "trinta e uma horas" virando "trinta e um horas", o que é gramaticalmente incorreto.
Se você precisa de uma lista pronta para baixar, eu recomendo gerar diretamente do Python usando a biblioteca num2words. A função num2words(n, lang='pt_BR') converte corretamente de 0 a 999999, lidando com a variação de gênero automaticamente. Ela é open source e roda localmente, sem depender de nenhuma API externa. Um exemplo rápido de output: num2words(1, lang='pt_BR') retorna 'um' / 'uma' dependendo do contexto fornecido via parâmetro adicional.
num2words(42, lang='pt_BR') retorna 'quarenta e dois'.
num2words(87, lang='pt_BR') retorna 'oitenta e sete'.
num2words(100, lang='pt_BR') retorna 'cem'.
num2words(99, lang='pt_BR') retorna 'noventa e nove'.
A desvantagem da biblioteca é que ela não possui versão oficial para JavaScript no frontend, então se você precisa renderizar números em tempo real numa página web sem backend, vai ter que confiar em bibliotecas de terceiros como number-to-words ou extenso, que às vezes apresentam bugs com faixas específicas como o intervalo 113-120 onde o tratamento de "cento e X" versus "centos" pode variar entre versões. Na prática, a diferença entre gerar os numeros del 1 al 100 corretamente e errar está em testar os casos limite: 1, 11, 21, 31, 41, 51, 61, 71, 81, 91 e 100. Esses são os pontos onde a concordância de gênero e a omissão do conectivo "e" em múltiplos de dez produzem os erros mais frequentes em produção. Passar por essa lista manualmente antes de considerar o gerador como confiável economiza horas de debug depois.