因此,在我成功登录该帐户后,该代码应停止运行,但是我不知道为什么没有发生这种情况,当我按“ q”时也应该发生这种情况。 同样,当我输入用户名然后输入密码后转到第二个选项(注册)时,它们不会立即写入.txt文件中,但是在我以某种方式结束代码后才被写入。 有什么方法可以立即写入用户名和密码,然后在同一循环中登录?
代码:
database = open("database.txt", "r+")
status = True
def display_menu():
print("Login or Register?")
print("INFO: Press 1 for Login or 2 for Register\nPress q to exit!")
choice = input("Login/Register/Exit: ")
if choice == "1":
login()
elif choice == "2":
register()
elif choice == "q":
status = False
def login():
username = input("Enter your name: ")
password = input("Enter your password: ")
if username and password in database:
print("You have successfully login!")
status = False
else:
if password not in database and username in database:
print("Wrong password!")
elif username not in database and password in database:
print("Wrong username!")
else:
print("You don't have an account!")
def register():
create_username = input("Username: ")
database.write(str(create_username))
create_password = input("Password: ")
database.write(str(create_password))
confirmation_password = input("Confirmation Password: ")
if create_username in database:
print("The name is already taken")
elif confirmation_password != create_password:
print("Your passwords doesn't match!")
register()
else:
print("You have successfully created your account!\n")
print("Now you can log in!\n")
login()
while True:
display_menu()
答案 0 :(得分:0)
1)if username and password in database:
-此代码查找用户名为布尔值(True或False),但如果不是,则只要存在用户名,该部分将返回True。
您需要:if username and password in database:
查看代码后,由于您存储数据的方式,这不太可能按预期工作,但至少会更正确。
2)您多次定义和编辑status
,但切勿在循环中使用它。我假设您希望这成为您的while
条件?
第二行,您需要while Status:
,而不是while True
3)文件通常仅在您执行file.close()
之后才被写入。因此,请确保每次尝试写入文件时都要这样做,然后重新打开它。
您的代码有很多问题,但是希望可以解决一些基本的逻辑错误。