Создание простой системы входа в систему в качестве личного проекта и некоторые проблемы с вводом-выводом в python

#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. Если ваш print вызов не выполняется, это потому, что ваше 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 и показать его?