我有以下代码,这是我需要帮助的登录功能。我有两个列表-用户名和密码。登录功能要求用户输入用户名和密码。如果输入的用户名在“用户名”列表中,并且与“密码”列表中的相同索引号相对应,则返回“已授予访问权限”,否则返回“拒绝”。在
出于教学目的,我对两件事感兴趣: a) 使用指定的两个列表对问题进行简单的修复。 b) 关于解决这个问题的最佳方法的建议。(例如字典、2darrays或其他任何东西)。在
问题是需要同时迭代两个列表并查找相同的对应索引号。在
示例:
username1 and pass1=已授予访问权限但是username1 and pass2=拒绝访问
代码:
usernames=["user1","user2","user3"]
passwords=["pass1","pass2","pass3"]
def main():
mainmenu()
def mainmenu():
print("****MAIN MENU****")
print("=======Press L to login :")
print("=======Press R to register :")
choice1=input()
if choice1=="L" or choice1=="l":
login()
elif choice1=="R" or choice1=="r":
register()
else:
print("please make a valid selection")
def login():
print("*****LOGIN SCREEN******")
username=input("Username: ")
password=input("Password: ")
if username in usernames and password in passwords:
print("yes")
else:
print("denied")
def register():
print("*****REGISTRATION****")
username=input("Enter a username:")
password=input("Enter a password:")
usernames.append(username)
passwords.append(password)
answer=input("Do you want to make another registration?")
if answer=="y":
register()
else:
registration_details()
def registration_details():
print(usernames)
print(passwords)
main()
注意:我知道将列表存储在2d数组中是一个明显的解决方案/建议,但出于教学原因,此修复是必要的-即学生根本没有覆盖数组。首先考虑简单的解决方案,但是stackoverflow用户也会从其他/更有效的方法来解决这个问题的建议中受益。在
更新:
正如有人在下面评论的那样……我想我应该澄清一下。我知道所需要的是得到列表中所述值的索引号。我的问题是-什么是最好的解决方案,或者一些解决方案。枚举。拉链。只使用for循环?很难知道如何用python开始,因为python不仅仅有一种方法……任何关于哪一种最惯用(pythonic)的注释也会很有用。在
最佳答案:
这可能是最好的答案,下面由Damian Lattenero提出 下面的缩进,一个常见的错误,是关闭的。有没有可能也只是快速的评论一下为什么?如何修复?在
^{pr2}$输出
*****LOGIN SCREEN******
Username: user3
Password: pass3
invalid username or password
invalid username or password
correct login
>>>
如果你想教python基础。。。在
导致
^{pr2}$但你也可以。。。在
我建议在这种情况下使用字典,我将告诉你如何:
如果只想使用列表:
^{pr2}$对代码的一个简单的修复方法是使用
zip()
。在您需要替换此if语句:
签署人:
^{pr2}$但是,您可以使用
dict
来存储您的唯一用户名和密码,然后检查用户名是否在当前dict中,然后检查密码是否正确。在相关问题 更多 >
编程相关推荐