1
resposta

[Bug] Quando eu coloco em uma def ele buga

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Fiz esse código para a resolução da tarefa, funciona perfeitamente porém é bem diferente do exemplo do instrutor.

Eu queria fazer com que o programa rodasse em loop e que se desse erro ele voltasse para o início mas se desse certo só desse a mensagem 'CPF Válido'

Nisso quis colocar em uma def para não precisar repetir o código e também usar o exemplo dado na aula, porém quando faço isso o código quebra.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, Vinícius! Como vai?

Você quer que o programa continue pedindo o CPF até que um CPF válido seja inserido. Para isso, você pode usar um loop while que só será interrompido quando um CPF válido for informado. Vou te mostrar como fazer isso:

def validar_cpf():
    while True:
        try:
            cpf = input("Digite o número do CPF (apenas números): ")
            if not cpf.isdigit():
                raise ValueError("Entrada inválida. Por favor, digite apenas números para o CPF.")
            if len(cpf) == 11:
                print("CPF válido.")
                break
            else:
                print("CPF inválido. O CPF deve conter 11 dígitos.")
        except ValueError as e:
            print(e)

validar_cpf()

Aqui estão as mudanças que fiz:

  1. Usei input() ao invés de float(input()), já que o CPF deve ser tratado como uma string de números.
  2. Usei o método isdigit() para verificar se todos os caracteres do CPF são numéricos.
  3. Coloquei o código dentro de um loop while True, que só é interrompido com break quando um CPF válido é inserido.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.