猜年龄升级版


'''
1. 可以直接玩猜年龄游戏,不需要登录
2. 登录成功后玩猜年龄游戏
3. 猜年龄猜中后,可以选择两次奖品
4. 注册的用户名不能重复注册
'''
import random prize_dict = {
'0': '奥特曼',
'1': '钢铁侠',
'2': '《笨方法学python》',
'3': '泰国一日游',
'4': 'iphoneX',
'5': '娃娃',
'6': '阿拉丁',
'7': '特斯拉',
'8': '谢谢惠顾'
} prize_cart = dict() # 最后把奖品放在这里 def register():
"""注册功能"""
print('欢迎来到注册界面!') count = 0
while count < 3:
# 与用户交互
username_inp = input('请输入你的用户名:').strip()
pwd_inp = input('请输入你的密码:').strip()
re_pwd_inp = input('请再次确认密码:').strip() # 判断两次密码输入是否一致
if re_pwd_inp != pwd_inp:
print('两次输入密码不一致')
count += 1
continue # 注册到文件中,判断用户名是否已经注册过
with open('userinfo.txt', 'a', encoding='utf-8') as fa:
with open('userinfo.txt', 'r', encoding='utf-8') as fr:
data = fr.read()
if username_inp in data:
print(f'用户名{username_inp}已经存在,请重新注册')
count += 1
continue
fa.write(f'{username_inp}:{pwd_inp}\n')
print('注册成功')
break def login():
"""登录功能"""
print('请登录。。。')
count = 0
while count < 3:
# 与用户交互
username_inp = input('请输入你的用户名:').strip()
pwd_inp = input('请输入你的密码:').strip() # 验证用户信息
with open('userinfo.txt', 'r', encoding='utf-8') as fr:
for i in fr:
i = i.strip('\n')
username, pwd = i.split(':') if username_inp == username and pwd_inp == pwd:
print('登录成功')
count = 3
return guess_age() else:
print('账号或密码错误')
count += 1 def select_prize():
"""选择奖品功能""" # 打印奖品
print('奖品信息如下:\n')
for i, j in prize_dict.items():
print(f'奖品编号:{i} {j}') for i in range(2): # 可以选择两次奖品
prize_choice = input('请选择你想要奖品的编号,如果不想要按q退出').strip()
if prize_choice == 'q':
break if prize_choice not in prize_dict:
print('没有这个奖品')
else:
prize_get = prize_dict[prize_choice]
print(f'恭喜你获得奖品:{prize_get}') # 把奖品加入
if prize_get in prize_cart:
prize_cart[prize_get] += 1
else:
prize_cart[prize_get] = 1 print(f'恭喜你获得以下奖品:{prize_cart}') def guess_age():
"""猜年龄功能"""
print('欢迎来玩猜年龄游戏, 范围为18-80')
age = random.randint(18, 80)
print(f'随机年龄:{age}') count = 0
while count < 3:
count += 1
age_inp = input('请输入你的年龄:').strip() if not age_inp.isdigit(): # 判断是否输入的是数字
print('傻逼,你不知道要输入数字吗')
continue age_inp = int(age_inp) # 删选年龄范围
if age_inp > 80 or age_inp < 18:
print('超出年龄范围了')
continue # 核心代码
if age_inp == age:
print('猜对了')
return select_prize() elif age_inp < age:
print('猜小了') else:
print('猜大了') continue func_msg = '''
1. 注册
2. 登录
3. 猜年龄游戏
''' func_dict = {
'1': register,
'2': login,
'3': guess_age
} print(func_msg) # 撸棒性
while True:
choice = input('请选择功能:').strip()
if not choice.isdigit():
print('非法字符,请重新输入')
continue
elif int(choice) > len(func_dict.keys()):
print('超出范围,没有这个功能')
continue
else:
break func_dict.get(choice)()

day10 作业的更多相关文章

  1. Day10作业及默写

    1,继续整理函数相关知识点,写博客. 2,写函数,接收n个数字,求这些参数数字的和.(动态传参) def func(*number): sum=0 for num in number: sum+=nu ...

  2. 老男孩Day10作业:主机管理程序

    一.作业需求: 1, 运行程序列出主机组或者主机列表 2,选择指定主机或主机组 3,选择主机或主机组传送文件(上传/下载) 4,充分使用多线程或多进程 5,不同主机的用户名,密码,端口可以不同 6,可 ...

  3. python day10作业答案

    2.def func(*args): sum = 0 for i in args: sum=sum+int(i) return sum a=func(2,3,9,6,8) print(a) 3. a= ...

  4. python day10作业

  5. day10作业—(闭包迭代器递归)

    补充:一个星号的  打散和聚合 a, b , *c = [1,2, 1,4] print( a , b , *c) #1 2 1 4 print(a, b, c) #1 2 [1, 4] *c , = ...

  6. day10作业

    1.Java中,用{}括起来的代码称为代码块. 代码块分为局部代码块,构造代码块,静态代码块,同步代码块 局部代码块:在方法中出现,限定生命周期,及早释放,提高内存利用率 构造代码块:在类中方法外出现 ...

  7. day10作业(函数实现注册''')

    在猜年龄的基础上编写登录.注册方法,并且把猜年龄游戏分函数处理,如 登录函数 注册函数 猜年龄函数 选择奖品函数 '''在猜年龄的基础上编写登录.注册方法,并且把猜年龄游戏分函数处理,如 2. 登录函 ...

  8. Alpha冲刺——day10

    Alpha冲刺--day10 作业链接 Alpha冲刺随笔集 github地址 团队成员 031602636 许舒玲(队长) 031602237 吴杰婷 031602220 雷博浩 031602634 ...

  9. python 作业

    Linux day01 计算机硬件知识整理 作业要求:整理博客,内容如下 编程语言的作用及与操作系统和硬件的关系 应用程序->操作系统->硬件 cpu->内存->磁盘 cpu与 ...

随机推荐

  1. C# 集合的交集 差集 并集 去重

    C# 集合的交集 差集 并集 去重 两个对象list,直接比较是不行的,因为他们存的地址不一样 需要重写GetHashCode()与Equals(object obj)方法告诉电脑 class Stu ...

  2. Vue生命周期钩子---2

    vue生命周期简介 咱们从上图可以很明显的看出现在vue2.0都包括了哪些生命周期的函数了. 生命周期探究 对于执行顺序和什么时候执行,看上面两个图基本有个了解了.下面我们将结合代码去看看钩子函数的执 ...

  3. 数据库(update tab1 set tab1.name=tab1.name+(select t2.name from tab2 t2 where t2.id=tab1.id))

    有t1 和 t2 两个表,表中的数据和字段如下: 执行 如下SQL语句: update tab1 set tab1.name=tab1.name+(select t2.name from tab2 t ...

  4. Octave教程

    Windows安装Octave http://wiki.octave.org/Octave_for_Microsoft_Windows 基本操作(Basic Operations) octave:1& ...

  5. QTP10启动错误:Error creatingUnable to create configuration directory "C:UsersmR?ã? directory entry

    安装完之后打开就一直: 百度也不知道为哈子(莫非是中文的用户名?反正我不想重装系统),真是很气人. 我就直接创建了一个临时账户,登陆进去,就可以运行了:

  6. js支持装饰器

    vscode中使用装饰器不报错 { "compilerOptions": { "experimentalDecorators": true } } yarn a ...

  7. JAVA中a++ 和 ++a 的区别

                         

  8. Python实现网络图形化界面多人聊天室 - Windows

    Python实现网络图形化界面多人聊天室 - Windows 项目名称:网络多人聊天室图形界面版本 项目思路: server.py 服务端文件,主进程中,创建图形化界面,询问地址(主机名,端口),点击 ...

  9. Reat学习笔记4

    相信很多初学react的朋友在研究组件的路由配置问题时都很困扰,我也是折腾了半天才搞明白的. 一般情况下路由配置包含path和component两个信息: component顾名思义是组件的意思,指的 ...

  10. .NET西安社区「拥抱开源,又见 .NET:壹周年Party」活动简报

    「拥抱开源,又见 .NET」:壹周年Party  .NET西安社区一岁啦!!!!7月21日,伴随着「拥抱开源,又见 .NET」系列最后一次线下分享活动暨一周年Party圆满结束, .NET西安社区一岁 ...