Fazer um programa de diálogo de login semelhante ao exercício 6 de strings, com a diferença de que é possível cadastrar no máximo 10 nomes de usuário e suas respectivas senhas (nomes de usuário repetidos devem ser descartados). No diálogo de login, o programa deve testar se o usuário fornecido existe e se a sua senha confere.

Passo 1

Beleza, então o que a gente precisa fazer é um programa que:
  1. Permite cadastrar até 10 pares (nome de usuário + senha).
  2. Ignora qualquer cadastro cujo nome de usuário já exista (sem duplicar).
  3. Depois dos cadastros, faz um diálogo de login onde o usuário informa nome e senha, e o programa diz se deu certo ou não.
Conteúdo da matéria: arrays (ou listas), laços (loops), estruturas condicionais (if/else) e operações de comparação de strings. Vamos precisar de um jeito de guardar até 10 nomes e 10 senhas, verificar duplicatas e depois comparar entrada do login com esses dados.

Passo 2

Vamos criar duas listas (ou arrays) paralelas:
  • usuarios para armazenar os nomes de usuário;
  • senhas para armazenar as senhas associadas.
Cada índice em usuarios corresponde ao mesmo índice em senhas. Exemplo: usuarios[0] tem senha senhas[0].

Passo 3

Fazer o cadastro (até 10 entradas ou até o usuário quiser parar). Para cada tentativa de cadastro:
  1. Pedir nome de usuário.
  2. Verificar se esse nome já existe em usuarios.
    • Se já existir, avisar “usuário repetido” e não guardar nada.
    • Se não existir e ainda não atingimos 10, pedir senha e armazenar.
  3. Parar quando chegarmos a 10 cadastros válidos ou se o usuário disser “não quero mais”.
Teoria usada aqui:
  • Loop (while ou for) para repetir até um limite ou até condição de parada.
  • Verificação de existência em array (procurar elemento).
  • Inserção em array no final.

Passo 4

Depois do cadastro, entra a fase de login:
  1. Pedir nome de usuário e senha.
  2. Procurar o nome na lista usuarios.
    • Se não achar, responder “usuário não encontrado”.
    • Se achar, pegar o índice i e comparar a senha informada com senhas[i].
      • Se bater, “login bem-sucedido”.
      • Se não bater, “senha incorreta”.
Teoria usada:
  • Comparação de strings para saber se duas senhas são iguais.
  • Acesso a elementos de array pelo índice.

Passo 5

Vamos juntar tudo num pseudocódigo (estilo Python) bem simples:
usuarios = []
senhas = []
MAX = 10

# Cadastro
while len(usuarios) < MAX:
    nome = input("Cadastro - Digite usuário (ou ENTER para parar): ")
    if nome == "":
        break
    if nome in usuarios:
        print("Usuário repetido! Tente outro nome.")
        continue
    senha = input("Cadastro - Digite senha: ")
    usuarios.append(nome)
    senhas.append(senha)
    print("Cadastro OK! Você tem", len(usuarios), "de", MAX, "cadastros.")

# Login
nome_login = input("Login - Usuário: ")
senha_login = input("Login - Senha: ")

if nome_login not in usuarios:
    print("Usuário não encontrado.")
else:
    i = usuarios.index(nome_login)
    if senha_login == senhas[i]:
        print("Login bem-sucedido!")
    else:
        print("Senha incorreta.")

Resposta

Acima está a solução passo a passo, com as estruturas de dados (listas), loops para cadastro limitado e verificações de duplicata e de credenciais no login.

Exercícios relacionados