day10作业
作业
-
在猜年龄的基础上编写登录、注册方法,并且把猜年龄游戏分函数处理,如
- 登录函数
- 注册函数
- 猜年龄函数
- 选择奖品函数
此程序提供的功能:
1 注册
2 登录
3 猜年龄
4 注销
5 退出
# coding=utf-8
import os, pickle, random
'''
1. 在猜年龄的基础上编写登录、注册方法,并且把猜年龄游戏分函数处理,如
2. 登录函数
3. 注册函数
4. 猜年龄函数
5. 选择奖品函数
'''
def user_info(user_dict):
print("您当前登录的用户是 %s !" % user_dict["username"])
def open_file(file, mode, *args):
"""用户信息保存函数"""
if mode == "wb":
data = args[0]
with open(file, mode) as f:
pickle.dump(data, f)
elif mode == "rb":
with open(file,mode) as f:
user_dict = pickle.load(f)
return user_dict
def user(username, password, mode):
"""用户处理函数"""
file = username + ".db"
if mode == "regist":
if not os.path.isfile(file):
user_dict = {"username": username, "password": password,"stat":0}
open_file(file, "wb", user_dict)
print("注册成功!")
else:
print("用户已存在!")
elif mode == "login":
if not os.path.isfile(file):
print("用户不存在")
return None
else:
user_dict = open_file(file,"rb")
if user_dict["stat"] == 1:
print("您已登录过,如需退出,请注销或退出程序")
return user_dict
elif username == user_dict["username"] and password == user_dict["password"]:
print("登录成功!")
user_dict["stat"] += 1
user_dict = open_file(file, "wb",user_dict)
user_dict = open_file(file, "rb")
return user_dict
else:
print("账号密码错误")
return
def regist():
"""注册函数"""
while True:
print("欢迎来到注册平台!")
username = input("请输入你的用户名 >>>")
password = input("请输入你的密码 >>>")
re_passwd = input("请再次输入你的密码 >>>")
if re_passwd != password:
print("密码不一致,again!")
continue
user(username, password, "regist")
break
def login():
"""登录函数"""
while True:
print("欢迎来到登录平台!")
global user_dict
username = input("请输入你的用户名 >>>")
password = input("请输入你的密码 >>>")
user_dict = user(username,password,"login")
if user_dict is None:continue
user_dict = user_dict
break
def logout():
global user_dict
user_info(user_dict)
chooice = input("是否注销登录,请输入[yes/no] >>>")
if chooice == "yes":
user_dict["stat"] = 0
open_file(user_dict["username"] + ".db","wb",user_dict)
print("注销成功!")
return user_dict
else:
return user_dict
def chooice_prize():
prize_dict = [
"芭比娃娃",
"变形金刚",
"psp游戏机",
"奥特曼",
"遥控飞机",
]
global jiangli_list
global user_dict
if user_dict.get("jiangli_list") is None:
jiangli_list = {}
else:
jiangli_list = user_dict["jiangli_list"]
chooice_count = 1
while chooice_count < 3:
user_info(user_dict)
for i,k in enumerate(prize_dict):print(i,k)
chooice = input(f"请输入你想要第 {chooice_count} 个奖励 >>>")
if not chooice.isdigit() or 0 > len(prize_dict) > int(chooice):
print("输入无效,请重新输入")
continue
if jiangli_list.get(prize_dict[int(chooice)]) is None:
jiangli_list[prize_dict[int(chooice)]] = 1
else:
jiangli_list[prize_dict[int(chooice)]] += 1
print("恭喜 %s 用户获得 %s 奖励一个" % (user_dict["username"],prize_dict[int(chooice)]))
chooice_count += 1
print("您两次选择奖励次数已用完,您的奖励物品为 %s " % jiangli_list)
user_dict["jiangli_list"] = jiangli_list
user_dict = open_file(user_dict["username"],"wb",user_dict)
return user_dict
def play_age():
"""猜年龄游戏"""
global user_dict
while True:
print("欢迎来到猜年龄游戏!")
try:
if user_dict["stat"] == 0:
print("请先登录")
break
else:
user_info(user_dict)
except Exception as f:
print("请先登录")
break
age = random.randint(18,25)
age_count = 1
while age_count <= 3:
age_inp = input("请输入你猜的年龄 >>>")
if int(age_inp) > age:
print("猜大了")
elif int(age_inp) < age:
print("猜小了")
else:
print("猜对了")
chooice_prize()
break
age_count += 1
if not age_count == 4:
continue
chooice = input("游戏结束,还想玩吗?[yes/no] >>>")
if chooice == "no":
break
else:
age_count = 1
#
# def see_goods_list():
# # try:
# global user_dict
# print(user_dict["username"])
# user_dict = open_file(user_dict["username"] + ".db","rb")
# print(user_dict)
# jiangli_list = user_dict["jiangli_list"]
# print("您的背包中有奖励的物品 %s " % user_dict["jiangli_list"])
# # except Exception as f:
# # print("请先登录")
def run():
while True:
print('''
1 注册
2 登录
3 猜年龄
4 注销
5 退出
''')
chooice = input("请输入你的选择 >>>")
if not chooice.isdigit() or 5 < int(chooice) < 0:
print("非法输入!")
continue
if chooice == "1":
regist()
elif chooice == "2":
login()
elif chooice == "3":
play_age()
# elif chooice == "4":
# see_goods_list()
elif chooice == "4":
logout()
elif chooice == "5":
user_info(user_dict)
chooice = input("是否退出程序 按yes/no >>>")
if chooice == "yes":
user_dict["stat"] = 0
open_file(user_dict["username"] + ".db","wb",user_dict)
break
else:
continue
if __name__ == "__main__":
run()

浙公网安备 33010602011771号