как я могу добавить слово в строку? - PullRequest
0 голосов
/ 12 января 2019

Итак, я пытаюсь создать программу регистрации и входа в Python. Я уже сделал часть регистрации, но сейчас я борюсь с частью входа. и самодельная простая база данных, использующая классы для хранения данных. Есть два файла: один для базы данных и программы регистрации и входа, а программа регистрации и входа читает базу данных.

Это текущий код входа в систему:

username = input("Enter your username: ")
if username == "(acc_info." + username + ".username)":
    print("Valid username")

Но это, конечно, не сработало

и acc.info - база данных

Это база данных

class Accounts:
    def __init__(self, username, pw, is_admin):
        self.username = username
        self.pw = pw
        self.is_admin = is_admin

    def full_info(self):
        return '{} {} {}'.format(self.username, self.pw, self.is_admin)

admin = Accounts('admin', '5555', True)

Я ожидал, что вход с именем username получит имя пользователя, подобное admin, и когда я нажму клавишу ввода, он запустит (acc_info.admin.username), и на выходе будет admin, и если вход будет таким же, как на выходе, он отправит мне к следующей части, которая является паролями, но если я знаю, как сделать имя пользователя, я могу сделать и парольную часть.

но теперь вывод (acc.info.admin.username) и программа проверяет, совпадает ли ввод (admin) с (acc.info.admin.username). и это не работает, потому что вывод (acc.info.admin.username) должен работать и дать мне вывод admin

1 Ответ

0 голосов
/ 12 января 2019

Чек if username == "(acc_info." + username + ".username)" никогда не пройдет. Это спрашивает, является ли строка, введенная пользователем, той же самой строкой, которую вы получаете, когда вы объединяете "(acc_info.", Что пользователь ввел и ".username)". Поэтому, если пользователь вводит, например, «bob», он сравнивает строки «bob» и «(acc_info.bob.username)». Эти две строки, очевидно, разные.

Мне не совсем понятно, как ваши "база данных" и "(acc_info ..." должны вписываться в то, что вы пытаетесь сделать. Но вот рабочий пример выполнения некоторых входов в систему и проверок:

class Accounts:
    def __init__(self, username, pw, is_admin):
        self.username = username
        self.pw = pw
        self.is_admin = is_admin

    def full_info(self):
        return '{} {} {}'.format(self.username, self.pw, self.is_admin)

    def __eq__(self, other):
        return (self.username == other.username and self.pw == other.pw)

def check_account(entered, account_list):
    for account in account_list:
        if entered == account:
            return account
    return False


accounts = [ Accounts('admin', '5555', True),
             Accounts('bob', '1234', False),
             Accounts('jill', '4321', False),
             Accounts('hacker', '123', False)]

entered_username = input("Enter your username: ")
entered_password = input("and your password: ")

entered_account = Accounts(entered_username, entered_password, None)

matched_account = check_account(entered_account, accounts)

if matched_account:
    print("Welcome, %s" % matched_account.username)
    if matched_account.is_admin:
        print("And I see you're an actual admin! Wow!")
else:
    print("Invalid username/password.")

Конечно, это не полный подход, который я бы использовал в реальной жизни (например, некоторые из этих шагов не только небезопасны, но и не являются наиболее эффективными с точки зрения памяти). Но опять же, это, по крайней мере, что-то, что соответствует тому, что вы просите.

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