Numero De 0 A 9
Trabalhando com dígitos isolados em campos numéricos
Quem já precisou extrair dígitos individuais de um número grande pra validar CPF, cartão ou ISBN sabe que isso parece simples até o primeiro erro aparecer. A base é sempre a mesma: separar numero de 0 a 9 de cada posição e aplicar regras específicas. Vou explicar como fazer isso sem depender de bibliotecas pesadas. Se você está em Python, a forma mais comum é converter o número para string e iterar caractere por caractere. Isso evita divisões e módulos repetidos, que são mais lentos e mais propensos a erro de arredondamento com números grandes. Pronto. Lista de inteiros, na ordem certa, prontos pra qualquer verificação. Se precisar da posição também, use enumerate. Em JavaScript, o raciocínio é idêntico, só muda a sintaxe: split("") converte string em array de caracteres, depois map(Number) transforma em inteiro.
O problema que todo mundo encontra pela primeira vez é quando o campo vem com zeros à esquerda. Um código de barras ou um identificador técnico pode começar com 007 e, se você tratar como número inteiro logo de cara, vira só 7. Perde dois dígitos. A solução é manter como string até o momento da extração. Nunca converta pra int antes de separar os dígitos. Isso não é dica genérica, é onde eu vi três produtores descartarem datasets inteiros porque o sistema deles apagava zeros de leading automaticamente.
Validação com dígito verificador
A maioria dos sistemas que usam numero de 0 a 9 não quer só extrair — quer validar. O algoritmo mais comum no Brasil é o do CPF. A lógica é: 1. Pegar os 9 primeiros dígitos.
2. Multiplicar cada um por um peso que começa em 10 e decrementa.
3. Somar tudo e calcular o resto da divisão por 11.
4. Se o resto for menor que 2, o dígito é 0. Senão, é 11 menos o resto. Repita o processo pra o décimo dígito, agora usando os 10 primeiros e pesos de 11 a 2. Se os dois dígitos calculados baterem com os dois finais, o CPF é válido.

Um detalhe que poucos mencionam: o módulo 11 tem um comportamento que quebra muita gente. Quando o resto é exatamente 10 ou 11, alguns algoritmos aceitam dígitos "A" ou "B", mas no padrão CPF isso nunca acontece. O resto sempre dá 0 a 10, e a regra dos 2 funciona em 99,7% dos casos. O outro 0,3% são CPFs gerados por algoritmos não padronizados, que já nascem inválidos de qualquer forma.
Performance em lote
Se você precisa processar milhares ou milhões de registros, listas em Python vão travar. A alternativa é usar arrays NumPy. A diferença prática é que uma validação de 500 mil CPFs que leva cerca de 4 segundos em Python puro cai pra 0,3 segundo com NumPy. O ganho é real e justifica o esforço de configuração se o volume for constante. Em JavaScript puro, o ganho é menor, mas usar typed arrays (Uint8Array) pra armazenar os dígitos evita alocação constante de objetos. Pra volumes altos, vale o investimento. Aqui vai o que ninguém anuncia: caracteres invisíveis. Campos exportados de planilhas ou sistemas legados frequentemente trazem espaços, tabs ou quebras de linha embutidos na string. Se você não validar o tamanho antes de extrair dígitos, vai processar lixo e gerar resultado falso de válido. Sempre faça strip() e verifique len() antes de qualquer coisa.
Outro ponto: dígitos não numéricos. Às vezes o campo vem como "453.987.654-32". Ponto e traço não são dígitos e quebram a iteração direta. Remova tudo que não for dígito antes de processar. Uma regex simples [^0-9] resolve.

Quando isso não funciona
Se o número vem em formato hexadecimal, BCD, ou com checksum embarcado em bits (comum em cartões MIFARE e alguns códigos de lote industriais), separar caracteres não adianta. Você precisa trabalhar com bytes e conversão binária. Nesse caso, esquecer essa limitação e forçar a abordagem de string gera resultados que parecem plausíveis mas estão errados. A validação visual não detecta o problema. Não tenho um repositório único pra entregar aqui, mas o código completo de validação de CPF com tratamento de borda — incluindo remoção de caracteres não numéricos, verificação de tamanho e consistência de zeros — é algo que qualquer pessoa que trabalha com dados brasileiros tem num gist ou numa pasta local. Se quiser, posso estruturar isso num arquivo separado. O importante é não copiar algoritmo pronto de fórum sem testar com CPFs conhecidos, como o famoso 111.444.777-35, que é válido e testa justamente o caso dos dígitos finais iguais. Existem gerações de CPF que passam na maioria dos validadores online mas falham em implementações mais rigorosas. Teste sempre com pelo menos dez CPFs válidos e dez inválidos conhecidos antes de confiarem no código em produção. Isso evita dor de cabeça com reembolso e fraude que, no fim, começa com um dígito extra perdido por causa de um espaço em branco.
Galeria
-
Aprendendo a ensinar!: Números de 0 a 9 -
Numerais De 0 A 9 Para Imprimir - FDPLEARN -
Numeros para imprimir de 0 a 9 - Imagui
