Исправьте l oop для чтения данных, сравнения данных и записи данных из текстового файла. - PullRequest
1 голос
/ 22 января 2020

Может, кто-нибудь подскажет, как решить следующую проблему?

Мне нужно попросить пользователя ввести имя пользователя, а затем пароль. Затем мне нужно сравнить имя пользователя и пароль с внешним TXT-файлом, в котором хранятся правильные имя пользователя и пароли. Для программирования мне нужно создать al oop, пока не будет введено правильное имя пользователя, а затем, когда введен правильный пароль. Мне также нужно отобразить, если имя пользователя правильное, но не пароль. Я просто пытаюсь выбрать, какой l oop использовать и как структурировать этот код.

Текстовый файл содержит:

admin, admin1

admin - это имя пользователя admin1 - это пароль

Ниже приведен код, который работает нормально, но не содержит правильного l oop.

with open('user.txt')as username:
  contents = username.read()
  user = input("Please enter your username:")
  if user in contents:
          print("Username correct")

  else:
        print ("Username incorrect. Please enter a valid username") 

1 Ответ

2 голосов
/ 22 января 2020

Оставляя в стороне подход для проверки пароля, вы можете сделать следующее. Сначала вы собираете имена пользователей и пароли в словарь users (ключи: имена пользователей, значения: пароль). Затем вы используете некоторое время l oop, которое проверяет ввод ваших пользователей по клавишам этого словаря (используя not in users) до совпадения ввода.

users = {}  # dictionary that maps usernames to passwords
with open('user.txt', 'rt') as username:
    for line in username:
        uname, password = line.split(",")
        users[uname.strip()] = password.strip()  # strip removes leading/trailing whitespaces

uinput = input("Please enter your username:")
while uinput not in users:
    print("Username incorrect. Please enter a valid username")
    uinput = input("Please enter your username:")

# do stuff with password etc.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...