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

Python 从类对象列表中确认用户和密码,python,list,class,Python,List,Class,我需要能够验证用户和输入的密码,但是当我运行下面的代码时,我只能验证列表中的第一个元素和第二个元素等没有被验证 注意:用户和密码作为类对象存储在列表中[如下所示: admin(用户、密码)]… def login(self): user_name = input("Please Enter Your Username : ").upper() password = input("Please Enter Your Password : ").upper() for obj

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

注意:用户和密码作为类对象存储在列表中[如下所示:
admin(用户、密码)]…

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

else
分支中运行
break
时,实际上是在
for
循环中调用它。删除
break
,它应该按照您的预期工作

只需从
else
语句中删除
break

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

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")

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

我还认为,在
if
的上下文中不使用
else
只是混淆和糟糕的编码。以前从未见过这样的东西。谢谢,伙计,它正按预期工作。你能告诉我你认为我应该用另一种方式(更好的方式)吗?@JoséOrlando正确的方法很复杂。讨论了一些用Python做得更好的方法。没问题。很高兴我能帮忙。