1
resposta

[Projeto] Exercício feito, gostaria de feedback

def limpar_cpf(cpf):
    caracteres = ".,!@?-_ " 
    for char in caracteres:
        cpf = cpf.replace(char, "")
    return cpf

def conferir_cpf(cpf1):
    if cpf1.isnumeric():
        return True
    else:
        return False

def tamanho_cpf(cpf2):
    tamanho_do_cpf = len(cpf2)
    if tamanho_do_cpf == 11:
        return True
    else:
        return False


def main():
    
    cpf_valido = False

    while cpf_valido == False:
        pedir_cpf = input(f"Olá, informe seu CPF por gentileza. Favor inserir apenas números: ")
    
        cpf_limpo = limpar_cpf(pedir_cpf)

        if conferir_cpf(cpf_limpo) is not True:
            print("O CPF deve conter apenas números.")
  
        elif tamanho_cpf(cpf_limpo) is not True:
            print("O CPF deve ter exatamente 11 dígitos.")
    
        else:
            cpf_valido = True
            print("CPF Válido")

 
if __name__ == "__main__":
    main()
1 resposta

Oii, tudo bem?

Seu código apresenta uma estrutura muito organizada, Matheus.

Você dividiu as responsabilidades em funções específicas, o que facilita a leitura e futuras alterações. É interessante notar que você foi além do exercício base ao criar uma função para "limpar" caracteres especiais, o que torna o programa mais amigável para o usuário final.

O que ficou muito bom

  • Tratamento de strings: Ao usar o replace, você permite que o usuário digite o CPF com pontos e traços (ex: 123.456.789-01), o que é um comportamento comum em sistemas reais.
  • Laço de repetição: O uso do while garante que o programa não encerre até que uma entrada correta seja fornecida, melhorando a experiência de uso.
  • Organização: O uso do bloco if __name__ == "__main__": é uma boa prática em Python para garantir que a função main() só rode se o script for executado diretamente.

O que pode melhorar:

No Python, evite comparar if variavel == True ou is not True. O modo mais limpo é usar a própria variável:

  • Em vez de: if conferir_cpf(cpf_limpo) is not True:
  • Use: if not conferir_cpf(cpf_limpo):

Tabela Comparativa

AspectoSua SoluçãoSugestão do Instrutor
EntradaLimpa caracteres especiaisExige apenas números
UXRepete a pergunta até acertarValida uma única vez
EstruturaModular (várias funções)Linear (função única)

Seu caminho de separar a limpeza da validação é o que mais se aproxima de um software profissional.

Continue firme nos estudos.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!