In [ ]:
# Exemplo: Cálculo do CPF
Seja o CPF escrito da forma ABC.DEF.GHI-JK
Temos que J e K são respectivamente o primeiro e segundo dígito verificador.
## Primeiro dígito
Calcular a soma: 10A + 9B + 8C + 7D + 6E + 5F + 4G + 3H + 2I e dividir o resultado por 11.
Se o resto for 0 ou 1: o dígito será 0
Caso contrário o dígito J será (11 - resto)
## Segundo dígito
Realizamos um procedimento parecido com o do primeiro dígito, porém calculamos a soma de:
11A + 10B + 9C + 8D + 7E + 6F + 5G + 4H + 3I + 2J e dividimos o resultado por 11.
Se o resto for 0 ou 1: o dígito será 0
Caso contrário o dígito K será (11 - resto)
In [7]:
#CPF Base: 172.328.060-78
cpf = '172.328.060'
pesos = list(range(2,11))[::-1]
cpf_digits = []
for d in cpf:
if d.isdigit():
cpf_digits.append(int(d))
soma=0
for i in range(len(cpf_digits)):
soma += cpf_digits[i]*pesos[i]
resto = soma % 11
if resto in [0,1]:
J= 0
else:
J = 11 - resto
cpf_digits.append(J)
pesos = list(range(2,12))[::-1]
soma=0
for i in range(len(cpf_digits)):
soma += cpf_digits[i]*pesos[i]
resto = soma % 11
K = 0 if resto in [0,1] else 11-resto
print('Dois últimos digitos do CPF:', J,K)