Я пытаюсь завершить процесс входа в мой код на Python в Repl.it. Он будет искать CSV-файл с именем «UDfile», чтобы подтвердить имена пользователей и пароли, чтобы затем получить доступ к созданной мной карточной игре. Вот как выглядит файл:
markd,12345
pltwo,67890
forhb,10\/3
Однако я создаю его для 2 пользователей. Вход в систему от первого лица работает нормально, пока вводимое мной имя пользователя выше имени пользователя второго. Но когда я пытаюсь ввести второе имя пользователя, правильное или нет, оно всегда говорит, что не распознает имя пользователя. Я подозреваю, что это не делает полный поиск. Как я могу провести тщательный поиск в этом CSV-файле, чтобы он позволил мне ввести пароль P2 и, следовательно, продолжить программу?
Я искал в stackoverflow что-то вроде «Как получить этокод, чтобы найти существующее имя пользователя, когда он говорит, что его там нет? "но я ничего не мог найти.
Я также пытался добавить
sys.exit
в конец
print («Имя пользователя не найдено»)
в user_findtwo (файл, пользователь), надеясь, что он тщательно найдет файл и завершит работу, только если он полностью не сможет его найти, но это немедленно завершит код после того, как программа сообщит, что она не найденаоднажды.
Наконец, я попробовал цикл while, чтобы сказать
while row[0] != usertwo:
print("Username not found")
sys.exit()
Я надеялся, что он просто будет искать по всему текстовому файлу и говорить "Имя пользователя не найдено", пока не найдет имя пользователя второго плеера,но вместо этого просто бесконечно печатается «Имя пользователя не найдено».
import csv
import sys
def main():
login()
logintwo()
show_menu()
menu_choice = int(input("Welcome to the RYG card game! Press \"1\" and then \"Enter\" to play a game:"))
options(menu_choice)
def login():
with open("UDfile", "r") as file:
file_reader = csv.reader(file)
user_find(file_reader)
file.close
def user_find(file):
user()
for row in file:
if row[0] == user:
print("Username is found:", user)
user_found = [row[0], row[1]]
pass_check(user_found)
break
else:
print("Username not found")
sys.exit()
def user():
global user
user = input("Player 1, enter your username (must be above player 2's desired name):")
def logintwo():
with open("UDfile", "r") as file:
file_reader = csv.reader(file)
user_findtwo(file_reader, user)
file.close
def user_findtwo(file, user):
usertwo = input("Player 2 enter your name:")
if usertwo == user:
print("Usernames must be different. Restart the program.")
sys.exit()
else:
for row in file:
if row[0] == usertwo:
print("Username is found:", usertwo)
user_found = [row[0],row[1]]
pass_checktwo(user_found)
break
else:
print("Username not found")
def pass_check(user_found):
x = True
while x:
user = input("Enter your password:")
if user_found[1] == user:
print("Password match.")
x = False
else:
print("Password doesn't match.")
sys.exit()
def pass_checktwo(user_found):
y = True
while y:
usertwo = input("Player 2 enter your password:")
if user_found[1] == usertwo:
print("Password match.")
y = False
else:
print("Password doesn't match.")
sys.exit()
Смотрите фон для ожидаемых и фактических результатов.