Хотя цикл в системе входа Python повторяется и не прерывается - PullRequest
0 голосов
/ 17 июня 2019

Мой учитель дал мне задание создать систему входа в систему только для части имени пользователя, и он дал код, но он не работает должным образом, поскольку цикл while повторяется, чтобы пользователь вводил свое имя пользователя, когда у него уже есть и нетперейти к следующей части кода.Я не думаю, что код даже читает файл или разделяет строки.

Я пытался вставить функцию разрыва в разные места и изменить отступы кода, но я так растерялся.Я также попытался изменить переменную "StudentDetails" на UserData (имя файла CSV), но это ничего не меняет.

#Login System
#First Name, Last Name, D.O.B, Email, Username, Password

UFound = False
UAttempts = 0 #Set to 0 tries to enter username
#Allow the yser to try login 3 times

while (UFound == False and UAttempts <3):
    UName = input("Please enter your username: ")
    UAttempts = UAttempts +1 #Has entered username once
    #Opens csv file and reads
myFile = open("UserData.csv","r")
for line in myFile:
    StudentDetails = line.split(",") #Splits line into csv parts
    if StudentDetails[4] == UName: #Username is in database
        UFound = True
myFile.close() #Close the data file

if UFound == True:
  print("Welcome to the quiz!")

else:
  print("There seems to be a problem with your details.")

Фактический результат: Пожалуйста, введите ваше имя пользователя: Aiza11 Пожалуйста, введите вашимя пользователя: Aiza11 Пожалуйста, введите ваше имя пользователя: Aiza11 Кажется, проблема с вашими данными.

Aiza11 - это имя пользователя в файле csv, но он постоянно просит меня ввести имя пользователя три раза, прежде чем сказать, что оно неверно ...

1 Ответ

0 голосов
/ 17 июня 2019

Вы столкнулись с этой проблемой, потому что вы не проверяете правильное имя пользователя в цикле while. Все это должно быть в цикле. Я бы также открыл и закрыл файл вне цикла, чтобы он не открывал и не закрывал файл каждый раз. Я также добавил бы раздел, чтобы поймать слишком много попыток. Делая это, вы можете удалить оператор and в цикле while.

myFile = open("UserData.csv","r")
while UFound == False:
    UName = input("Please enter your username: ")
    UAttempts = UAttempts +1 #Has entered username once
    if UAttempts >2:
       print('Too many attempts')
       break
    #Opens csv file and reads
    myFile = open("UserData.csv","r")
    for line in myFile:
       StudentDetails = line.split(",") #Splits line into csv parts
       if StudentDetails[4] == UName: #Username is in database
           print("Welcome to the quiz!")
           UFound = True


     else:
        print("There seems to be a problem with your details.")
myFile.close() #Close the data file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...