1
resposta

Validação de entrada para login

No treinamento Praticando Python: laços for e while, para o exercício Validação de entrada para login, crie uma função para isolar um trecho que tinha chance de repetição(copiar e colar), nesta função solicito a digitação do usuário e senha e retorno o tamanho das informações digitadas. No laço while, até os tamanhos sejam inferiores a 5 para o nome e 8 para a senha será repetido o laço. Dentro do laço valido quem esta menor e apresento a mensagem.


quantidade_de_caracteres_nome = 0
quantidade_de_caracteres_senha = 0

def tamanho_nome_senha():
    usuario = input('Digite seu nome de usuário: ')
    senha = input('Digite sua senha: ')

    quantidade_de_caracteres_nome = len(usuario)
    quantidade_de_caracteres_senha = len(senha)
    return quantidade_de_caracteres_nome, quantidade_de_caracteres_senha


while quantidade_de_caracteres_nome <= 5 or quantidade_de_caracteres_senha <= 8:
    quantidade_de_caracteres_nome, quantidade_de_caracteres_senha = tamanho_nome_senha()

    if quantidade_de_caracteres_nome <= 5:
        print('Seu nome de usuário deve ter no mínimo 5 caracteres.')

    if quantidade_de_caracteres_senha <= 8:
        print('A senha deve ter no mínimo 8 caracteres.')


print('Cadastro realizado com sucesso!')
1 resposta

Olá Gilmar! Tudo bem?

Você já fez a função para capturar o nome de usuário e a senha e está utilizando um laço while para validar o tamanho das entradas. No entanto, há um pequeno detalhe que pode estar causando um comportamento inesperado: o uso dos operadores de comparação no while.

No seu código, você está usando <= para verificar se o nome de usuário tem 5 caracteres ou menos e se a senha tem 8 caracteres ou menos. No entanto, de acordo com as regras fornecidas, o nome de usuário deve ter pelo menos 5 caracteres e a senha deve ter pelo menos 8 caracteres. Então, a condição correta para o while seria:

while quantidade_de_caracteres_nome < 5 or quantidade_de_caracteres_senha < 8:

Aqui está o código ajustado:

quantidade_de_caracteres_nome = 0
quantidade_de_caracteres_senha = 0

def tamanho_nome_senha():
    usuario = input('Digite seu nome de usuário: ')
    senha = input('Digite sua senha: ')

    quantidade_de_caracteres_nome = len(usuario)
    quantidade_de_caracteres_senha = len(senha)
    return quantidade_de_caracteres_nome, quantidade_de_caracteres_senha

while quantidade_de_caracteres_nome < 5 or quantidade_de_caracteres_senha < 8:
    quantidade_de_caracteres_nome, quantidade_de_caracteres_senha = tamanho_nome_senha()

    if quantidade_de_caracteres_nome < 5:
        print('Seu nome de usuário deve ter no mínimo 5 caracteres.')

    if quantidade_de_caracteres_senha < 8:
        print('A senha deve ter no mínimo 8 caracteres.')

print('Cadastro realizado com sucesso!')

Com essa alteração, o programa continuará pedindo as informações até que ambas as condições sejam atendidas.

Espero ter ajudado e bons estudos!

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