如何在字符串中添加单词?
how can i add a word in a string?
所以我正在尝试在 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
的用户名,当我按下输入时 运行s (acc_info.admin.username)
并且输出将是 admin
如果输入与输出相同,它会将我发送到下一部分,即密码,但如果我知道如何做用户名,我也可以做密码部分。
但现在输出是 (acc.info.admin.username)
并且程序检查输入(admin
)是否与 (acc.info.admin.username)
相同。它不起作用,因为输出 (acc.info.admin.username)
应该 运行 并给我 admin
的输出
检查 if username == "(acc_info." + username + ".username)"
永远不会通过。这是在询问用户输入的字符串是否与连接“(acc_info.”、用户输入的内容和“.username)”时得到的字符串相同。因此,如果用户键入“bob
”,它会比较字符串 "bob" 和“(acc_info.bob.username)”。这两个字符串明显不同。
我不完全清楚你的 "database" 和 "(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.")
当然,这不是我在现实生活中使用的完整方法(例如,其中一些步骤不仅不安全,而且不是最节省内存的)。但同样,它至少看起来符合您的要求。
所以我正在尝试在 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
的用户名,当我按下输入时 运行s (acc_info.admin.username)
并且输出将是 admin
如果输入与输出相同,它会将我发送到下一部分,即密码,但如果我知道如何做用户名,我也可以做密码部分。
但现在输出是 (acc.info.admin.username)
并且程序检查输入(admin
)是否与 (acc.info.admin.username)
相同。它不起作用,因为输出 (acc.info.admin.username)
应该 运行 并给我 admin
检查 if username == "(acc_info." + username + ".username)"
永远不会通过。这是在询问用户输入的字符串是否与连接“(acc_info.”、用户输入的内容和“.username)”时得到的字符串相同。因此,如果用户键入“bob
”,它会比较字符串 "bob" 和“(acc_info.bob.username)”。这两个字符串明显不同。
我不完全清楚你的 "database" 和 "(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.")
当然,这不是我在现实生活中使用的完整方法(例如,其中一些步骤不仅不安全,而且不是最节省内存的)。但同样,它至少看起来符合您的要求。