首页 > 解决方案 > 如何允许识别此 if 语句?

问题描述

我正在尝试为登录代码创建一个循环,并且一直在努力格式化此代码以达到第 (16) 行的“用户接受”。我怎样才能重新格式化它以允许此代码正常工作?

    ##### USER INFO #####
Users = {
  'jc1':123
  ,'jc2':213
  ,'jc3':312
  ,'jc4':321
  ,'jc5':231}
ADPIN = '14726'
##### LOG-IN #####
while True: #Loop Creation
  JK = input('Please enter your username: ') #Username Check
  if JK in Users:
      DK = input('Please enter your password: ') #Password Check
      print('Bug Text Main')
      if JK and DK in Users: #Problem Statement
        print('User Accepted: Hello '+JK+'.') #Unreachable Code
        print('Objective Text')
  else: 
    ToC = input('It appears that the username entered does not exist: Would you like to try again(Press: 1) or create an account(Press: 2)')    #Retry / Account Creation
    if ToC == '2':
      AD = input('Please enter an administrative pin: ')
      if AD == ADPIN:
        add = input('Please enter a username: ')
        tht = input('Please enter a password: ')
        Users.update( {add:tht})
        print('Bug Test Users Append')
    else:               #Restart / Retry
      print('Bug Test Restart')

标签: pythonif-statement

解决方案


我假设Users字典键是用户 ID,值是相应的密码。然后:

如果您达到以下“问题陈述”,您就知道它JK在 中Users,因此JK计算结果为True,因此请替换:

if JK and DK in Users: #Problem Statement

和:

if Users[JK] == DK:

最初的语句是针对字典中的所有用户 ID 测试密码。

另一个问题是您的字典值在输入字符串时是 int 值。因此,要么将您的字典值更改为“121”之类的字符串,要么将您的输入语句更改为:

DK = int(input('Please enter your password: ')) #Password Check

但请注意,如果用户输入的内容不是有效整数,则上述内容将引发异常。因此,您可能希望将上述内容放在一个try块中。


推荐阅读