Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Projeto] Minha resposta à essa questão:

Olá a todos,
Eu tenho usado o loop while nos meus exercicios com funções para multiplas validações, pois assim o codigo não quebra e eu não preciso rodar novamente para uma nova tentativa. Procurei deixar mensagens mais descritivas, porque, como usuario, quando algo vai mal em um aplicativo / programa que eu esteja usando, sinto falta de um direcionamento mais eficiente. Acho que nós como desenvolvedores em formação devemos, desde o inicio, preocupar-nos com a experiência do usuario.

um abraço!

def cpf_validation():
    while True:
        
        user_cpf = input("Enter your CPF: ").strip()

        if not user_cpf.isdigit():
            print("Error: The CPF must contain only numbers.")
            continue

        if len(user_cpf) != 11:
            print("Error: The CPF must have exactly 11 digits.")
            continue

        if len(set(user_cpf)) == 1:
            print("Error: The CPF cannot have all digits the same.")
            continue
        
        print("CPF validated successfully!")
        return user_cpf       


cpf_validation()
1 resposta

Oi, Raul, como vai?

Sua solução ficou muito consistente e demonstra uma preocupação importante com experiência do usuário e validação de dados. O uso do while True foi uma escolha interessante para manter o programa ativo até que uma entrada válida seja fornecida, evitando encerramentos desnecessários e tornando a interação mais fluida.

As validações aplicadas também ficaram bem organizadas. O uso de isdigit() resolve corretamente a verificação de caracteres inválidos, enquanto a checagem do tamanho com len(user_cpf) != 11 atende exatamente ao requisito solicitado na atividade. Além disso, a validação extra utilizando len(set(user_cpf)) == 1 foi um diferencial interessante, porque impede CPFs compostos apenas por números repetidos, algo bastante comum em entradas inválidas.

Seu comentário sobre experiência do usuário também foi muito pertinente. Desenvolver mensagens claras e objetivas desde o início é uma prática importante em aplicações reais, principalmente em sistemas que dependem bastante da interação com pessoas usuárias.

Como próximo passo, você já imaginou como implementar a validação matemática oficial do CPF utilizando os dígitos verificadores?

Parabéns pela construção da solução e pela maturidade no raciocínio apresentado junto ao código. Continue compartilhando suas implementações e reflexões no fórum, porque isso agrega bastante valor ao aprendizado coletivo. O fórum segue à disposição para suas próximas dúvidas e projetos.

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