Я относительно новичок в python и пытаюсь создать надежную программу для создания и хранения учетных записей. Когда пользователь хочет создать новое имя пользователя, считывается файл username_storage, чтобы увидеть, существует ли он уже для другой учетной записи.
# Enter and check username
new_user = input("Username: ")
if new_user in username_storage:
print("Sorry, that username is already taken.\n")
else:
break
Проблема в том, что всякий раз, когда пользователь пытается создать новую учетную запись, используя часть существующего имени пользователя, программа не разрешает это, поскольку регистрирует, что новое имя пользователя находится внутри предварительно созданного имени пользователя.
например если "william" является существующим именем пользователя в текстовом файле username_storage, это не позволяет использовать новое имя пользователя "will" или "liam", поскольку эти имена находятся внутри "william".
Спасибо всем, кто может ответить на этот вопрос; если я недостаточно ясно объяснил свою проблему, пожалуйста, дайте мне знать!
Добро пожаловать в Stack Overflow! Пожалуйста, возьмите тур. Для помощи в отладке вам необходимо создать минимальный воспроизводимый пример, что означает достаточно кода для воспроизведения проблемы, а также ожидаемого и фактического вывода. Кстати, если вам нужны дополнительные советы, посмотрите Как спросить.






usernames = username_storage.split()
print(new_user in usernames)
будет делать то, что вы хотите, предполагая, что у вас не может быть пробелов в имени пользователя
Почему вы предполагаете, что имена пользователей разделены пробелами? Они могут быть CSV.
Почему вы предполагаете, что имена пользователей не могут содержать пробелы?
Почему вы предполагаете, что username_storage это строка? ОП сказал, что это файл. Однако они могут ошибаться, поскольку new_user не может содержать новую строку, а in <file> проверяет строки.
вы правы, похоже, что это может быть файл, и это может сработать ... я предполагал, что string in filehandle потерпит неудачу, но быстрый тест показал мне, что я ошибался
В начале программы прочитайте все имена пользователей в список и проверьте имя пользователя в этом списке или нет