字典值是字符串吗?

2024-09-19 23:42:29 发布

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

我想将字典中的原始输入元素保存到变量中。但这似乎不起作用,因为信息被保存为字符串,我不知道为什么。下面是我正在做的一个示例:

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谢谢


Tags: 字符串name示例inputrawuuiddefaccount
2条回答

使用字典的原因是为了避免重复使用帐户。使用用户键入的用户名作为键来访问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)

你在这里用“for”真的不合适,因为accounts是一本字典而不是一个列表。你知道吗

因为accounts是一个字典,所以您需要检查所提供的用户名是否在帐户.密钥(),然后检查该条目是否有正确的密码。你知道吗

所以,像这样的方法是可行的:

if loginusername in accounts.keys():
     if accounts[loginusername]['password'] == loginpassword:
          return 'success'
else:
     return 'failure'

现在,如果帐户是一个列表,那么您需要for循环。格言允许你避免这种情况。你知道吗

相关问题 更多 >