How to input two related items into a Code

Asked

Viewed 66 times

-1

    usuarios= {'user':[]}
    senhas= {'senha': []}

    #Menu cadastro 
    print("Se você já é cadastrado digite (1)")
    print("Se você não é cadastrado digite (2)")
    menu= int(input("Digite a opção:"))

    #Cadastro de usuário
    def cadastro():
        usuario_novo= input("Informe o nome de usuário desejado: ")
        senha_nova= input("Informe a senha desejada: ")


        usuarios['user'].append(usuario_novo)
        senhas['senha'].append(senha_nova)

        print("Cadastrado com sucesso!")

#Login   
def login():
    consultar= input("Informe o usuario: ")
    consultarV= consultar in usuarios['user']
    if consultarV == True:
        print("Usuário correto!")
    else:
        print("Usuário incorreto!")

    consultar_senha= input("Informe a senha: ")
    consultar_senhaV= consultar_senha in senhas['senha']
    if consultar_senhaV== True:
        print("Senha correta")
    else:
        print("Senha incorreta")

how do I relate passwords to users

2 answers

0


To relate the data, just use the function zip passing as parameter the values that are inside your lists. See the example below:

usuarios = {"user": ["Gabriel", "Vanessa"]}
senhas = {"senha": ["pato23", "gamer23_bot@senha"]}

for item in zip(usuarios["user"], senhas["senha"]):
    print(item)

# ('Gabriel', 'pato23')
# ('Vanessa', 'gamer23_bot@senha')

You can also use the list method index to get the position of the user name in the list that is in the key user and consequently, get the position of the password that is in the list of password.

usuarios = {"user": ["Gabriel", "Vanessa"]}
senhas = {"senha": ["pato23", "gamer23_bot@senha"]}

nome_procurado = "Gabriel"
posicao = usuarios["user"].index(nome_procurado)
senha = senhas["senha"][posicao]

If I may say so, I don’t think it’s right for you to create a user-only dictionary and another one for passwords only. You could in single dictionary store this information to make it easier, practical and organized the dictionary. Example:

registros = {"user": ["Gabriel", "Vanessa"], "senha": ["pato23", "gamer23_bot@senha"]}

To further facilitate dictionary manipulation, you can define user names as the keys dictionary registros, where each user will have a dictionary to store their information. Example:

# Dentro do dicionário registros temos chaves que serão os nomes dos usuários, 
# e essas chaves guardarão outros dicionários contendo as informações de cada usuário.

registros = {
    "Gabriel": {"senha": "pato23"},
    "Vanessa": {"senha": "gamer23_bot@senha"}
    }

# Abaixo está um exemplo simples para você ver o quão fácil ficaria 
# o código com esse formato de dicionário acima. No exemplo abaixo, eu criei
# uma tela para redefinir senha.

nome        =  input("Digite seu nome: ")
senha       =  input("Digite sua senha: ")
nova_senha  =  input("Digite sua nova senha (Mínimo de 5 caracteres): ")

print("Verificando nome de usuário...")

if nome in registros:
    print("Verificando senha...")

    if registros[nome]["senha"] == senha:
        print("Logado com sucesso.")

        if len(nova_senha) > 5:
            registros[nome]["senha"] = nova_senha
            print("Senha redefinida.")
        else:
            print("A senha deve ter no mínimo 5 caracteres.")
    else:
        print("Senha inválida.")
else:
    print("Nome de usuário inválido.")

0

The best way to do this is by using the object properties of Python, which is the great strength of the language. To understand more about using object-oriented python I recommend this series here: https://www.youtube.com/watch?v=ihKUUur4nxg&list=PLV7VqBqvsd_3yRYYWrHkziPL6izzrUIkp&index=11

Your code written using object orientation would look like this:

lista_usuarios = []

class Usuario():
    # Define as variáveis da classe (objeto) "Usuario".
    nome = ''
    senha = ''

# Cadastro de usuário
    def cadastro(self):
    # Define as duas propriedades do objeto 'Usuario'.
        self.nome = input("Informe o nome de usuário desejado: ") 
        self.senha = input("Informe a senha desejada: ")
    # Anexa um usuário particular já definido com nome e senha a uma lista de objetos do mesmo tipo.
        lista_usuarios.append(self)
        print("Cadastrado com sucesso!")
        return self # Retorna o objeto à função que chamou a definição.

# Verificação de senha
def verificar_senha(usuario_identificado): # Recebe um objeto 'Usuario'
    consultar_senha = input("{} informe a senha: ".format(usuario_identificado.nome))
    if consultar_senha == usuario_identificado.senha: # Verifica se a senha fornecida é igual a propriedade senha do usuario que foi fornecido pela definição.
        print("Senha correta")
    else:
        print("Senha incorreta")

# Login   
def login():
    nome_para_teste = input("Informe o usuario: ") 
    for x in lista_usuarios: # Aloca em x os usuários cadastrados.
        if nome_para_teste  == x.nome: # Verifica se a propriedade nome dos usuários é igual ao nome fornecido.
            print("Usuário correto!")
            verificar_senha(x) # Chama a verificação de senha para o usuário 'x'.
        else:
            print("Usuário incorreto!")

# Menu cadastro
menu = 3
while menu != 0:
    print("Se você já é cadastrado digite (1)")
    print("Se você não é cadastrado digite (2)")
    print("Digite zero para sair.")
    menu= int(input("Digite a opção:"))
    if menu == 1:
        login()
    if menu == 2:
        pessoa = Usuario() # Define a variavel 'pessoa' como do tipo 'Usuario'.
        pessoa.cadastro() # Como 'pessoa' é da classe 'Usuario' ela tem a definição de classe "cadastro()".
        verificar_senha(pessoa) # Chama a verificação de senha pro usuário recêm cadastrado.
    if menu == 0:
        for x in lista_usuarios:
            print('Usuário: {}, senha: {}'.format(x.nome,x.senha))
  • i just didn’t understand this " for x in lista_usuarios" ?

  • 'x' in this case is a helper variable to scroll through a list. The " for x in lista_usuarios" command takes one by one the objects within the 'userslist' and executes the commands below. You could use " for usuario in lista_usuarios" / " for pessoa in lista_usuarios" / " for cadastrado in lista_usuarios" /etc. But it is important to note that this variable will be local, defined only dendro of loop 'for... in'. I used a different name precisely to highlight the hierarchy of the variable or is within which space of the program it is defined. The video I gave you explains that question well.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.