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)


Dois últimos digitos do CPF: 7 8