3
respostas

Todos os CPFs são inválidos

Os CPFs a serem validados não passam no valida_cpf.validate(documento), sendo assim, nenhum aparece como "CPF salvo", nem mesmo o objeto_cpf_tres que tem 11 caracteres e é uma string.

Classe

from validate_docbr import CPF

class ValidaCpf:
    def __init__(self, documento):
        self.analisa_cpf(str(documento))

    def analisa_cpf(self, documento):
        if len(documento) == 11:
            valida_cpf = CPF()
            if valida_cpf.validate(documento):
                self.cpf = documento
                print('CPF salvo')
            else:
                print('CPF inserido não é valido')
        else:
            print('Número de digitos incorreto')

Main:

from cpf import ValidaCpf

cpf_um = 1235436791
cpf_dois = 12354367912
cpf_tres = '12354367912'

objeto_cpf_um = ValidaCpf(cpf_um )
objeto_cpf_dois = ValidaCpf(cpf_dois )
objeto_cpf_tres = ValidaCpf(cpf_tres )

Resposta:

Número de digitos incorreto
CPF inserido não é valido
CPF inserido não é valido
3 respostas

Marcio, tudo bem?

Fiz um teste aqui e passando um cpf válido(fiz o teste com o meu) e retornou a mensagem "CPF Salvo".

Dando uma pesquisada nessa lib, pude notar que ela faz o cálculo de validação do CPF. No código a baixo eu criei a variável cpf_4 atribui o cpf válido gerado aleatoriamente pelo site https://www.4devs.com.br/gerador_de_cpf

#trecho do arquivo main.py

from validate_docbr import CPF
from validador import *

cpf_um = 1235436791
cpf_dois = 12354367912
cpf_tres = '12354367912'
cpf_4 = '44374136010'

objeto_cpf_um = ValidaCpf(cpf_um)
objeto_cpf_dois = ValidaCpf(cpf_dois)
objeto_cpf_tres = ValidaCpf(cpf_tres)
objeto_cpf_4 = ValidaCpf(cpf_4)



#Trecho do arquivo validador.py
from validate_docbr import CPF


class ValidaCpf:
    def __init__(self, documento):
        self.analisa_cpf(str(documento))

    def analisa_cpf(self, documento):
        if len(documento) == 11:
            valida_cpf = CPF()
            if valida_cpf.validate(documento):
                self.cpf = documento
                print('CPF salvo')
            else:
                print('CPF inserido não é valido')
        else:
            print('Número de digitos incorreto')

Espero ter ajudado.

Obrigado, Anderson!

Eu tinha testado com o meu CPF também. Abri o tópico, pois este é um dos exercícios . A pergunta é qual dos objeto_cpf do 1 ao 3 retorna CPF Salvo, e a alternativa marcada como correta é o objeto_cpf_tres, mas esse também retorna CPF inválido. Eu também havia testado com o meu próprio CPF para ver se o mesmo era validado pela lógica e também havia funcionado.

Mais uma vez obrigado pela resposta.

Opa Marcio, não tinha me atentado.

Show de bola!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software