Имя пользователя и пароль, список или словарь? - PullRequest
0 голосов
/ 11 октября 2019

Я довольно новичок в питоне. Я пытался разработать программу, чтобы список пользователей соответствовал их паролям. Я использовал два отдельных списка, но теперь думаю, что 2d массив или словарь будет лучше? Я не уверен, что технически лучше всего делать, потому что я самоучка / учу! ...

вот код, который я получил .... любые советы приветствуются.

спасибо

def login():
    official_users=['dan','bob','bill']
    official_passwords=['snow','golf','dogs']
    username=input("Enter your user name: ")
    while username in official_users:
        print("You are user number: ",official_users.index(username)+1)
        position=(official_users.index(username))
        print(position)
        attempts=0
        while attempts<3:
            password=input("Enter your password: ")
            if password == official_passwords[position]:
                print("Log in successfull")
                print("Hello",username)
                login()
            else:
                print("Incorrect password")    
                attempts+=1
                print("Attempts left: ",3-attempts)
                if attempts==3:
                    print("Too many attempts!")
                    login()
    print("Unknown User")
    login()

login()

Ответы [ 2 ]

0 голосов
/ 12 октября 2019

Я настраивал это, чтобы прочитать имена пользователей и пароли из текстового файла.

logins.txt

, содержащий ...

Дэн, Боб, Билл

снег, гольф, собаки

Вот код ....

def readfile():
    with open('logins.txt') as f:
        users = f.read().splitlines()
        usernames=users[0]
        passwords=users[1]
        list_users=usernames.split(",")
        list_passwords=passwords.split(",")
        print("~~~~~~~~~~~~~~~")
        username=input("Enter your user name: ")
        while username in list_users:
            position=(list_users.index(username))
            attempts=0
            while attempts<3:
                password=input("Enter your password: ")
                if password == list_passwords[position]:
                    print("Log in successfull")
                    print("Hello",username)
                    readfile()
                else:
                    print("Incorrect password")    
                    attempts+=1
                    print("Attempts left: ",3-attempts)
                    if attempts==3:
                        print("Too many attempts!")
                        readfile()
        print("Unknown User")
        readfile()

readfile()

Потребовалось время, чтобы выяснить, почему текстовый файл не обрабатывался как списокно, думаю, я уже все разобрал ...

0 голосов
/ 11 октября 2019

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

def login():
official = {'dan': ['snow', 1],
            'bob': ['golf', 2],
            'bill': ['dogs', 3]
            }
username=input("Enter your user name: ")
if username in official:
    print("You are user number: ",official[username][1])
    attempts=0
    while attempts<3:
        password=input("Enter your password: ")
        if password == official[username][0]:
            print("Log in successfull")
            print("Hello",username)
            login()
        else:
            print("Incorrect password")    
            attempts+=1
            print("Attempts left: ",3-attempts)
            if attempts==3:
                print("Too many attempts!")
                login()
print("Unknown User")
login()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...