从类对象列表中确认用户和密码

2024-04-20 05:12:10 发布

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

我需要能够验证用户和输入的密码,但当我运行下面的代码时,我只能验证列表中的第一个元素和第二个元素等没有被验证

注意:用户和密码作为类对象存储在列表中[如下:
admin(user, password)]...

def login(self):
    user_name = input("Please Enter Your Username : ").upper()
    password = input("Please Enter Your Password : ").upper()
    for obj in self.admins:
        while obj.admin_name != user_name and obj.admin_password != password:
            print(" Sorry Username and Password Incorrect Please Re-enter for Validation ")
            user_name = input("Please Enter Your Username : ").upper()
            password = input("Please Enter Your Password : ").upper()
        else:
            print("Greetings,", user_name, "You are Now Logged in the System")
            break

Tags: 用户nameobj密码列表inputyouradmin
3条回答

else分支中运行break时,实际上是在for循环中调用它。删除break,它应该可以按您所期望的那样工作

只需从else语句中删除break

您的while循环只检查第一个用户名。您应该切换循环的顺序:

def login(self):
    user_name = input("Please Enter Your Username : ").upper()
    password = input("Please Enter Your Password : ").upper()
    while True:
        for obj in self.admins:
            if obj.admin_name == user_name and obj.admin_password == password:
                break
        else:
            print(" Sorry Username and Password Incorrect Please Re-enter for Validation ")
            user_name = input("Please Enter Your Username : ").upper()
            password = input("Please Enter Your Password : ").upper()
            continue
        break
    print("Greetings,", user_name, "You are Now Logged in the System")

这也是一种非常糟糕的检查密码的方法

相关问题 更多 >