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做得更好的方法。没问题。很高兴我能帮忙。