#python #file #sorting #search
#python #файл #сортировка #Поиск
Вопрос:
Я хочу использовать рекурсию и двоичный поиск для поиска в текстовом файле имени пользователя и пароля. Каждая учетная запись (имя пользователя и пароль) сохраняются в одной строке с пробелом, разделяющим их.
Это то, что у меня есть в настоящее время (работает), просто хочу использовать больше методов:
def validation(username1, password1):
file = open("Accounts.txt", "r")
for line in file:
line = line.split("n")
line = line[0].split(" ")
if username1 == line[0] and password1 == line[1]:
main_menu() #main_menu() will allow the user to enter the game
else:
valid = Label(root, text="Account not found try again or sign up")
valid.place(x=215, y=130)
login() #will recall the login window and ask them to renter details
file.close()
У меня есть следующий код, который я хочу использовать:
def validation(username1, password1):
file = open("Accounts.txt", "r")
userame1 и passwrod1 — это данные, которые ввел пользователь. Теперь я хочу проверить, что учетная запись уже создана с использованием двоичного поиска и рекурсии.
Идеи Эми о том, как это сделать? Я все еще учусь программировать.
Комментарии:
1. Ваше требование все еще не ясно, вы упомянули двоичную, рекурсивную и пузырьковую сортировку?
2. @AbhinavMathur извините за это, я изменил вопрос x
3. Прочитать все строки, отсортировать этот список, а затем использовать двоичный поиск? В чем здесь проблема
4. @AbhinavMathur не могли бы вы, пожалуйста, привести мне пример
5. @Katie010203 Ни двоичный поиск, ни рекурсия не кажутся особенно актуальными для этой задачи. Если вы хотите использовать альтернативный подход, я бы предложил создать dict с именами пользователей в качестве ключей и паролями в качестве значений. Затем, если имя пользователя не было в результирующем dict , ваша программа предложит создать новую учетную запись; но если бы это было так, программа проверила бы пароль и, если он был неправильным, предложила бы пользователю (используя цикл while) ввести правильный.
Ответ №1:
Самый простой способ — прочитать все строки и отсортировать их, чтобы можно было применить двоичный поиск.
def validation(username1, password1):
file = open("Accounts.txt", "r")
lines = [i.strip().split() for i in file.readlines()]
# lines is a list of [username, password] sublists
lines.sort()
if binary_search(lines, [username1, password1]):
login()
else:
print(“User Not Found”)
Комментарии:
1. является ли «binary_search» какой-то функцией? x
2. @Katie010203 Смотрите модуль bisect в стандартной библиотеке python.
Ответ №2:
вы можете попытаться узнать, есть ли определенное слово в текстовом файле:
def validation(username1, password1):
file = open("Accounts.txt", "r")
content = file.read()
if str(username1) and str(password1) in content:
return True
else:
return False
А затем вызовите main_menu() или login() в зависимости от результата проверки()
Комментарии:
1. использует ли это рекурсию и двоичный поиск? x
2. Я не собираюсь лгать, я понятия не имею. Но я бы сказал, что да
3. @персефона нет, это не так. Пожалуйста, сначала ознакомьтесь с терминологией