Skip to content

Instantly share code, notes, and snippets.

@cayusmatias
Last active April 10, 2024 13:27
Show Gist options
  • Save cayusmatias/e4e379e9b3db646673e4bdbbee6e9cff to your computer and use it in GitHub Desktop.
Save cayusmatias/e4e379e9b3db646673e4bdbbee6e9cff to your computer and use it in GitHub Desktop.
Função para validar nº CEI
import re
def valida_cei(valor):
"""
Valida um número de CEI (Cadastro Específico do INSS).
Parâmetros:
- valor (str|int): Número do CEI a ser validado.
Retorna:
- bool: True se o CEI é válido, False caso contrário.
"""
# Converte para string e remove caracteres não numéricos
valor = re.sub('[^0-9]', '', str(valor))
# Verifica se o tamanho é adequado e ajusta se necessário
if len(valor) > 12:
return False # Mais de 12 dígitos não são válidos
elif len(valor) < 12:
valor = valor.zfill(12) # Adiciona zeros à esquerda se menos de 12 dígitos
# Pesos para o cálculo do dígito verificador
pesos = [7, 4, 1, 8, 5, 2, 1, 6, 3, 7, 4]
# Calcula a soma dos produtos dos dígitos pelos pesos
total = sum(int(digito) * peso for digito, peso in zip(valor[:11], pesos))
# Calcula o dígito verificador
unidades = total % 10
dezenas = (total // 10) % 10
total2 = unidades + dezenas
# Subtrai de 10 para encontrar o dígito verificador esperado
dv = (10 - total2) % 10
# Compara o dígito verificador calculado com o último dígito do valor
return dv == int(valor[11])
# Exemplos de uso
print(valida_cei('123456789012')) # Exemplo que deve retornar True ou False, dependendo da validade do número
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment