Новые пользователи не могут создать учетную запись с частью уже существующего имени пользователя (проблема с текстовым файлом)

Я относительно новичок в 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".

Спасибо всем, кто может ответить на этот вопрос; если я недостаточно ясно объяснил свою проблему, пожалуйста, дайте мне знать!

В начале программы прочитайте все имена пользователей в список и проверьте имя пользователя в этом списке или нет

Ahmet Burak 14.05.2022 05:45

Добро пожаловать в Stack Overflow! Пожалуйста, возьмите тур. Для помощи в отладке вам необходимо создать минимальный воспроизводимый пример, что означает достаточно кода для воспроизведения проблемы, а также ожидаемого и фактического вывода. Кстати, если вам нужны дополнительные советы, посмотрите Как спросить.

wjandrea 14.05.2022 05:48
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
2
25
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
usernames = username_storage.split()
print(new_user in usernames)

будет делать то, что вы хотите, предполагая, что у вас не может быть пробелов в имени пользователя

Почему вы предполагаете, что имена пользователей разделены пробелами? Они могут быть CSV.

wjandrea 14.05.2022 05:53

Почему вы предполагаете, что имена пользователей не могут содержать пробелы?

wjandrea 14.05.2022 05:54

Почему вы предполагаете, что username_storage это строка? ОП сказал, что это файл. Однако они могут ошибаться, поскольку new_user не может содержать новую строку, а in <file> проверяет строки.

wjandrea 14.05.2022 05:56

вы правы, похоже, что это может быть файл, и это может сработать ... я предполагал, что string in filehandle потерпит неудачу, но быстрый тест показал мне, что я ошибался

Joran Beasley 14.05.2022 06:06

Другие вопросы по теме