我想将字典中的原始输入元素保存到变量中。这似乎不起作用,因为信息被保存为字符串,我不知道为什么。以下是我正在做的事情的样本:
accounts = {}
def accountcreater():
accountname = raw_input("Account Name: ")
accountpassword = raw_input("Account Password: ")
accountUUID = 1
accountUUID += 1
accounts[accountname] = {"password":accountpassword,"UUID":accountUUID}
def login():
loginusername = raw_input("Account Name: ")
loginpassword = raw_input("Account Password: ")
for usernames in account:
if usernames == loginusername:
accountpassword = accounts[usernames][???]
accountpassword = accounts[usernames][???]
else:
pass
这是一个非常简单的代码示例。现在是" [???]"我不知道该放什么。我尝试了这段代码:
accountpassword = accounts[usernames][password]
accountpassword = accounts[usernames][UUID]
但这似乎不起作用,因为它说密码和UUID没有定义。然而,我似乎只能输入[用户名],它会正常工作。我也试过了以下内容:
accountpassword = accounts[usernames]['password']
accountpassword = accounts[usernames]['UUID']
这引发了这个错误:字符串索引必须是整数,而不是str 。 我不知道为什么我的鳕鱼不起作用。请帮我! :D谢谢你
答案 0 :(得分:1)
使用字典的原因是避免需要迭代帐户。使用用户键入的用户名作为密钥来访问accounts
中的记录,然后使用文字字符串“password”作为该记录的密钥来获取用户的密码。然后将其与用户输入的密码进行比较。
def login():
loginusername = raw_input("Account Name: ")
loginpassword = raw_input("Account Password: ")
# We'll assume that an account exists for the entered login name
expected_password = accounts[loginusername]['password']
if expected_password == loginpassword:
print "Login successful for {0}".format(loginusername)
else:
print "Password {0} incorrect for {1}".format(loginpassword, loginusername)
答案 1 :(得分:0)
你使用"用于"这里真的不合适,因为帐户是字典而不是列表。
由于帐户是字典,您要检查提供的用户名是否在accounts.keys()中,然后检查该条目是否有正确的密码。
所以,这样的事情会起作用:
if loginusername in accounts.keys():
if accounts[loginusername]['password'] == loginpassword:
return 'success'
else:
return 'failure'
现在,如果帐户是一个列表,那么你需要你的for循环。 dict允许你避免这种情况。