Почему моя подпрограмма продолжает выполнять все мои операторы if после вызова другой подпрограммы - PullRequest
0 голосов
/ 19 декабря 2018

Моя подпрограмма logins () будет продолжать выполнять как else, так и elif, после того, как найдет логин и проверит пароль.Я не могу понять, почему он это делает, но на самом деле останавливает мой прогресс. введите описание изображения здесь

def login ():
Username_Input = input("Please enter your username : ")
logins = open("logins.csv","r")
List_Information = list(csv.reader(logins))
for x in List_Information:# loops through all lists
    if x[0] != Username_Input :
        print("Username not found please register ")
        register () 
    else:
        Password_Input = input("Username found please enter your password : ")
        for x in List_Information:
            if x[1] == Password_Input :
                print("Loged in lets get this game going. ")
                game()
            else :
                print("nope sorry password not found lets go back to the menu : ")
                Menu()

1 Ответ

0 голосов
/ 19 декабря 2018

После того, как он найдет правильный пароль, он продолжит проходить через List_information после вызова game ().Вызов game () не остановит зацикливание, и поэтому он найдет следующего пользователя из List_information и скажет, что пароль был неправильным.

Вы должны найти правильную запись из List_information (основанной на имени пользователя) и проверьте пароль к этой записи.Теперь вы сравниваете только первый элемент в List_information.

Примерно так:

user = None
for x in List_information:
  if x[0] == Username_input:
    user = x
if user == None:
  print("Username not found please register ")
  register ()
else:
  Password_Input = input("Username found please enter your password : ")
  if user[1] == Password_input:
    game()
  else:
    Menu()
...