#python #python-3.x
#python #python-3.x
Вопрос:
Мой вопрос в том, что я создаю систему входа в систему на Python. Эта система очень проста. Пользователь вводит логин, свой адрес электронной почты и пароль. Программа проверяет из файла, правильны ли адрес электронной почты или пароль или нет. Но я сталкиваюсь с некоторыми проблемами с этим. Итак, я сначала открыл файл, а затем спросил пользователя, хочет ли он войти в систему или зарегистрироваться. Если он вводит login, программа запрашивает адрес электронной почты и пароль и проверяет в файле, соответствует ли это или нет. Программа правильно принимает входные данные, но во время проверки происходит сбой. Он не выдает ошибку, но не выводит желаемое утверждение. Это мой код
with open('Data_Login_System.txt' , 'r') as data:
user_input = input("""Type Either Login or SignUp> """)
if user_input.lower() == "login":
Email = input("""Type your Email> """)
Password = input("""Type Your Password> """)
for line in data:
if line.lower() == f"email : {Email.lower()}" or line.lower() == f"password : {Password.lower()}":
print("Logged in")
Это содержимое файла.
Email : shabeebasghar123@gmail.com
Password : shabeebasghar123
Всякий раз, когда я ввожу правильный адрес электронной почты и пароль, он должен печатать logged in, но это не так, программа просто запускается нормально, и в конце ничего
Это выполнение программы
Type Either Login or SignUp
> login
Type your Email
> shabeebasghar123@gmail.com
Type Your Password
> shabeebasghar123
Комментарии:
1. Строки из файла имеют символ конца строки (
'n'
) в конце…2. Я получаю
logged in
в качестве выходных данных без изменения одной строки вашего кода. Возможно, вы что-то неправильно указали или, возможно, ваш текстовый файл fomat неуместен3. Не имеет отношения к вашему вопросу; Почему бы не использовать правильную / облегченную базу данных? Конечно, возвращаемое значение из запроса (например, пароль) будет легче протестировать, чем синтаксический анализ / поиск в текстовом файле. Просто мысль…
4. @Karthik Я пробовал это много раз, но это не работает.
5. Если ваш
if
условие никогда не выполняется. Попробуйтеline.lower().strip()
. Если это не проблема, распечатайте оба значения вelse
предложении и внимательно сравните 2 строки на глаз.
Ответ №1:
Это сработало, просто выполнив line.lower().strip()
вместо всего line.lower()
Ответ №2:
Прежде всего, вы должны использовать функцию readlines() для чтения строк из файла .txt с циклом. На самом деле вы могли бы прочитать строки без цикла на этом. Смотрите код ниже.
lines = data.readlines()
print(data)
Выходом для этого было бы:
[‘Электронная почта: mail@gmail.comn ‘, ‘Пароль: passwd123’].
Поэтому я бы попробовал немного другой подход. Убедитесь, что у вас нет ненужных дополнительных строк в текстовом файле.
user_input = input("Type Either Login or SignUp")
if user_input.lower() == "login":
email = input("""Type your Email""")
password = input("""Type Your Password""")
with open("data.txt", 'r') as f:
t_mail = f.readline()
t_passwd = f.readline()
if f"Email : {email}n" == t_mail and f"Password : {password}" == t_passwd:
print('You are now logged in')
У меня это работает нормально.
Комментарии:
1. Это дает мне список после итерации по нему и проверки электронной почты таким же образом, как указано выше, он дает мне тот же результат
2. Смотрите мой пост. Это ответ на ваш вопрос?
3. Я все еще получаю тот же результат. Это работает нормально, но, в конце концов, выполнение кода завершается без распечатки входа в систему. Это скриншот выходной ссылки
4. можете ли вы сделать скриншот вашего кода и содержимого файла .txt в IDE и показать его?