Не могу выйти из системы входа - PullRequest
0 голосов
/ 15 октября 2018

Система входа в систему у меня не будет выходить из цикла.Я показал это своему учителю CS, и он сказал мне, чтобы изменить отступы перерыва.Это не сработало.Я искал вокруг, но я не могу найти причину, почему цикл не будет разорван.Вот код:

while True:
    print("User 1")
    login=input("Do you have an account? (yes/no) ")
    loggedin=False
    if login.lower()=="yes":
        login1=open("login.csv")
        reader = csv.reader(login1)
        username1=input("What is your username: ")
        password1=input("What is your password: ")
        for row in reader:
            if row[0]==username1:
                if row[1]==password1:
                    print("Welcome " + username1)
                    loggedin=True
                    break
        if loggedin==False:
            print("Invalid username or password. Please try again.")
            continue

Код спрашивает, есть ли у пользователя учетная запись.Когда я ввожу да и даю правильное имя пользователя и пароль, он продолжает цикл.Для контекста, когда пользователь входит в систему, он говорит "добро" и выходит из цикла.Однако этого не происходит, вместо этого он говорит приветствие и перезапуск цикла.CSV для этого содержит данные для входа в систему.

Любая помощь по поводу того, почему цикл не прервется, будет принята с благодарностью.

Дилан

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Как то так?Я имею в виду, что у вас уже есть переменная "loggedin", почему бы не использовать ее в цикле while ...

loggedin = False
while not loggedin:
    print("User 1")
    login=input("Do you have an account? (yes/no) ")
    loggedin=False
    if login.lower()=="yes":
        login1=open("login.csv")
        reader = csv.reader(login1)
        username1=input("What is your username: ")
        password1=input("What is your password: ")
        for row in reader:
            if row[0]==username1 and row[1]==password1:
                print("Welcome " + username1)
                loggedin=True
                break
        if loggedin==False:
            print("Invalid username or password. Please try again.")
            continue
0 голосов
/ 15 октября 2018

Вы пропускаете break.

Вы выходите из цикла for, но не цикл while.

Попробуйте это:

while True:
    print("User 1")
    login=input("Do you have an account? (yes/no) ")
    loggedin=False
    if login.lower()=="yes":
        login1=open("login.csv")
        reader = csv.reader(login1)
        username1=input("What is your username: ")
        password1=input("What is your password: ")
        for row in reader:
            if row[0]==username1:
                if row[1]==password1:
                    print("Welcome " + username1)
                    loggedin=True
                    break
        if loggedin==False:
            print("Invalid username or password. Please try again.")
            continue
        if loggedin==True:
            break

РЕДАКТИРОВАТЬ:

Лично я бы не стал использовать while True и вместо этого сделал бы что-то вроде этого:

loggedin = False
while not loggedin:
    print("User 1") # Consider moving this outside of the while loop too
    login=input("Do you have an account? (yes/no) ")
    if login.lower() == "yes":
        login1=open("login.csv") # Consider moving this outside of the while loop too
        reader = csv.reader(login1) # Consider moving this outside of the while loop too
        username1=input("What is your username: ")
        password1=input("What is your password: ")
        for row in reader:
            if row[0]==username1 and row[1]==password1:
                print("Welcome " + username1)
                loggedin = True
                break
        if loggedin==False:
            print("Invalid username or password. Please try again.")

Обратите внимание, что continue не нужен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...