Member 13646633 Ответов: 1

Даже когда я успешно войду в систему, он все равно напечатает строку "пользователь неверен", как мне остановить это?


# Test Login 

userlist = {"user" : "password", "user2" : "password2"}

login = input('do you have an account (Y/N)?')
if (login == 'n'):
    New_User = input('create user: ')
    New_Pass = input('create password: ')
    userlist[New_User] = New_Pass

loop = 'true'
while (loop == 'true'):
    username = input("Please enter your username: ")
    for x in userlist:
        if (username == x):
            password = input("Please enter your password: ")
            if (password == userlist[x]):
                print ("Logged in successfully as " + username)
                loop = 'false'
            else:
                print ("Password incorrect!")
        else: 
            print ("User incorrect")


Что я уже пробовал:

# Test Login 

userlist = {"user" : "password", "user2" : "password2"}

login = input('do you have an account (Y/N)?')
if (login == 'n'):
    New_User = input('create user: ')
    New_Pass = input('create password: ')
    userlist[New_User] = New_Pass

loop = 'true'
while (loop == 'true'):
    username = input("Please enter your username: ")
    for x in userlist:
        if (username == x):
            password = input("Please enter your password: ")
            if (password == userlist[x]):
                print ("Logged in successfully as " + username)
                loop = 'false'
            else:
                print ("Password incorrect!")
    else: 
        print ("User incorrect")

1 Ответов

Рейтинг:
0

Patrice T

Для debuf цели, следует изменить код, чтобы:

userlist = {"user" : "password", "user2" : "password2", "user3" : "password3", "user4" : "password4", "user5" : "password5"}

и:
print ("User incorrect "+x)

и запустите код.

Вы увидите, что сообщение печатается каждый раз, когда вводится не то имя пользователя, которое вы проверяете. Проблема заключается в вашей логике, вы знаете, что пользователь неверен только после того, как вы проверили все имена пользователей в вашем списке и что они не совпадают.
Что вы должны сделать:
loop in userlist
  check for a match with input
if there was no match
  user is inxorrect


Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что он делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]
27.3. ПДБ — отладчика Python — питон 3.6.1 документации[^]
Отладка в Python | Python покоряет Вселенную[^]
pdb – интерактивный отладчик - Python модуль недели[^]
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.