Last active
April 10, 2024 13:27
-
-
Save cayusmatias/e4e379e9b3db646673e4bdbbee6e9cff to your computer and use it in GitHub Desktop.
Função para validar nº CEI
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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