如何在字典列表中检查用户名和相关密码以与用户inpu进行比较

2024-09-28 23:39:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为我的班做一个项目,我被困在这个额外的学分部分。 我正在构建一个密码和用户名检查器来检查包含用户名和密码的词典列表

我试过许多方法,但似乎都达不到我所需要的结果。我的代码的问题是它没有将密码与相关的用户名进行比较。如果密码在任何字典中,则结果为TRUE。任何帮助都将不胜感激,因为我会一直坚持下去

This is what I have:

adminList = [
    {
        "username": "DaBigBoss",
        "password": "DaBest"
    },
    {
        "username": "root",
        "password": "toor"
    }
]

#Import Required Tools

import getpass


####################################
###     Define ALL FUNCTIONS     ###
####################################


#Define function to confirm login credntials of the user
def getCreds():
    user_name = input("Please input your user name: ")
    while not any(d["username"] == user_name for d in adminList):
        print("User name not recognized, please try again.")
        getCreds()

    pass_word = getpass.getpass("Please enter your password: ")
    print("Checking Credentials")


    while not any(d["password"] == pass_word for d in adminList):
        print("The password in not correct")
        pass_word = getpass.getpass("Please enter your password again: ")
    else:
        print ("Hello and welcome to the Matrix.")    

#Call the getCreds function        
getCreds()

Tags: thenamein密码yourusernamenotpassword
1条回答
网友
1楼 · 发布于 2024-09-28 23:39:46

我将避免使用直接的编码示例—但方法是同时获取用户名和密码,然后将这两个值与管理员凭据进行比较。 对于该任务,您可能应该将adminList从字典列表修改为字典列表:

adminList = {"DaBigBoss": {"password": "DaBest}, "root": {"password": "toor"}}

这种安排的好处有两个: 1.查询比较容易(用户匹配查询比密码比较容易) 2.保证DaBigBoss只能有一个,更容易防止N次相同用户名(在adminList中使用一个简单的if“DaBigBoss”就足够了)

相关问题 更多 >