Как мне разрешить это, если заявление будет признано? - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь создать al oop для кода входа в систему и изо всех сил пытался отформатировать этот код, чтобы достичь "User Accepted" в строке (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')

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Я предполагаю, что словарные ключи Users - это идентификаторы пользователя, а значения - соответствующие пароли. Тогда:

Если вы достигнете следующего «Постановка проблемы», вы знаете, что JK находится в Users и, следовательно, JK оценивается как True, поэтому замените:

if JK and DK in Users: #Problem Statement

с:

if Users[JK] == DK:

Первоначальный оператор проверял пароль по всем идентификаторам пользователей в словаре.

Другая проблема заключается в том, что ваши значения словаря являются значениями int во время ввода строки. Поэтому либо измените значения словаря на строки типа «121», либо измените оператор ввода на:

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

Но учтите, что если пользователь вводит что-то, не являющееся действительным целым числом, приведенное выше вызовет исключение. Так что вы можете поместить вышеприведенное в блок try.

0 голосов
/ 06 февраля 2020

Измените строку 13 на

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

и оператор if на

  if DK in Users.values(): #Problem Statement
...