import random ocean = [] users = {} def register(): username = input("请输入用户名:") password = input("请输入密码:") if username in users: print("用户名已经存在,请重新输入!") else: users[username] = password print("注册成功!") def login(): username = input("请输入用户名:") password = input("请输入密码:") if username not in users or users[username] != password: print("用户名或密码错误,请重新输入!") return None else: print("登录成功!") return username def throw_bottle(username): message = input("请输入你想说的话:") ocean.append((username, message)) print("你的漂流瓶已经扔到海里了!") def pick_bottle(): if len(ocean) == 0: print("海里没有漂流瓶!") else: username, message = random.choice(ocean) ocean.remove((username, message)) print("你捞起了一个漂流瓶,里面的信息是:", message) print("这个漂流瓶是", username, "扔的!") while True: if not users: command = input("请输入命令:1(注册),2(登录),0(退出程序)") else: command = input("请输入命令:1(扔漂流瓶),2(捞漂流瓶),0(退出程序)") if command == "1": register() elif command == "2": username = login() elif command == "1": if not users: print("请先注册或登录!") else: throw_bottle(username) elif command == "2": pick_bottle() elif command == "0": break else: print("无效的命令,请重新输入!")
时间: 2024-02-29 10:56:55 浏览: 13
这段代码实现了一个简单的漂流瓶游戏,其中包含注册、登录、扔漂流瓶和捞漂流瓶四个功能。用户可以先注册或登录,然后扔出自己的漂流瓶,或者从海里捞出别人扔出的漂流瓶。漂流瓶的信息存储在一个列表中,每个漂流瓶由用户名和消息内容构成。注册时需要输入用户名和密码,登录时需要输入用户名和对应的密码。如果输入的用户名已经存在或者密码不正确,则无法登录或注册。用户扔漂流瓶时需要输入消息内容,随机从海里捞漂流瓶时会显示漂流瓶的消息内容和扔漂流瓶的用户名。如果海里没有漂流瓶,则会提示用户。用户可以通过输入命令选择要执行的功能,输入0退出程序。
相关问题
import random # 模拟一个海洋,用列表存储漂流瓶信息 ocean = [] # 模拟用户数据,用字典存储用户名和密码 users = {} # 定义函数,注册新用户 def register(): username = input("请输入用户名:") password = input("请输入密码:") if username in users: print("用户名已经存在,请重新输入!") else: users[username] = password print("注册成功!") # 定义函数,登录用户 def login(): username = input("请输入用户名:") password = input("请输入密码:") if username not in users or users[username] != password: print("用户名或密码错误,请重新输入!") return None else: print("登录成功!") return username # 定义函数,将漂流瓶扔到海里 def throw_bottle(username): message = input("请输入你想说的话:") ocean.append((username, message)) print("你的漂流瓶已经扔到海里了!") # 定义函数,从海里捞起一个漂流瓶 def pick_bottle(): if len(ocean) == 0: print("海里没有漂流瓶!") else: username, message = random.choice(ocean) ocean.remove((username, message)) print("你捞起了一个漂流瓶,里面的信息是:", message) print("这个漂流瓶是", username, "扔的!") # 主程序循环执行,等待用户输入命令 while True: if "username" not in locals(): command = input("请输入命令:register(注册),login(登录),exit(退出程序)") else: command = input("请输入命令:throw(扔漂流瓶),pick(捞漂流瓶),exit(退出程序)") if command == "register": register() elif command == "login": username = login() elif command == "throw": if "username" in locals(): throw_bottle(username) else: print("请先登录!") elif command == "pick": pick_bottle() elif command == "exit": break else: print("无效的命令,请重新输入!")请修改这串代码的输入操作,修改如下:rejister改为1,login改为2,exit改为0,扔瓶子改为1,捡瓶子改为2
以下是修改后的代码:
```python
import random
ocean = []
users = {}
def register():
username = input("请输入用户名:")
password = input("请输入密码:")
if username in users:
print("用户名已经存在,请重新输入!")
else:
users[username] = password
print("注册成功!")
def login():
username = input("请输入用户名:")
password = input("请输入密码:")
if username not in users or users[username] != password:
print("用户名或密码错误,请重新输入!")
return None
else:
print("登录成功!")
return username
def throw_bottle(username):
message = input("请输入你想说的话:")
ocean.append((username, message))
print("你的漂流瓶已经扔到海里了!")
def pick_bottle():
if len(ocean) == 0:
print("海里没有漂流瓶!")
else:
username, message = random.choice(ocean)
ocean.remove((username, message))
print("你捞起了一个漂流瓶,里面的信息是:", message)
print("这个漂流瓶是", username, "扔的!")
while True:
if "username" not in locals():
command = input("请输入命令:1(注册),2(登录),0(退出程序)")
else:
command = input("请输入命令:1(扔漂流瓶),2(捞漂流瓶),0(退出程序)")
if command == "1":
register()
elif command == "2":
username = login()
elif command == "1":
if "username" in locals():
throw_bottle(username)
else:
print("请先登录!")
elif command == "2":
pick_bottle()
elif command == "0":
break
else:
print("无效的命令,请重新输入!")
```
修改后的代码中,输入命令的方式改为了数字,1代表注册,2代表登录,0代表退出程序,扔瓶子也改为了1,捡瓶子改为了2。
def login(): i = 1 while i <= 3: username = input("输入用户名:") password = input("输入密码:") with open("a.txt") as f: for line in f.readlines(): user = line.strip().split() if user[0] == username and user[1] == password: print("登录成功!") return print("用户名或密码错误!") i += 1 print("账号锁定!") login()代码优化
可以将文件读取和用户验证分开处理,将用户验证的部分封装成一个函数,并添加参数来传递用户名和密码。同时,可以将错误提示信息统一处理,并在登录失败时增加一定时间的等待,以防止暴力破解。下面是代码优化后的示例:
```
import time
def read_user_info():
with open("a.txt") as f:
users = [line.strip().split() for line in f.readlines()]
return users
def validate_user(users, username, password):
for user in users:
if user[0] == username and user[1] == password:
return True
return False
def login():
i = 1
users = read_user_info()
while i <= 3:
username = input("输入用户名:")
password = input("输入密码:")
if validate_user(users, username, password):
print("登录成功!")
return
else:
print("用户名或密码错误!")
if i < 3:
print("请稍等片刻再尝试。")
time.sleep(1)
i += 1
print("账号锁定!")
login()
```