python_猜年龄
猜年龄,有三次机会,如何做?
1. 检查 输入的数据是否合法,通过异常try来处理,并记录 输入错误次数
2. 通过累加器,判断是否猜了3次,并提示还剩余多少的机会
3. 当3次错误,跳出
#!/usr/bin/python3 def guess_age(name, real_age):
'''猜年龄,有三次机会'''
count = 0
print('%s来猜猜我的年龄来' % name)
while True:
error_number = 0
while True: # 验证是否输入合法 try:
maybe_age = int(input("%s:" % name))
except:
error_number += 1
print('调皮,不想玩了,已经答非所问 %s 次了' % error_number)
else:
break count += 1
if maybe_age == real_age:
if count == 1:
print('%s真的太棒了,居然马上就猜中了' % name)
else:
print('%s真的太ben了,居然猜了这么多次才猜中,你居然猜了 %s 次' % (name, count))
break
elif maybe_age > real_age:
print('我有那么老么?滚滚滚,再给你%d机会'%(3-count))
elif count == 3:
print('不和你玩了,真的ben!!!!!!!')
break
elif maybe_age < real_age:
print('嗯哼,把我年龄说的那么低,暗示我智商低?哼,还给你%d机会' % (3-count)) if __name__ == '__main__':
guess_age(name='北门吹雪', real_age=18)
猜年龄进阶
猜年龄,并且记录最近5次猜的数据,并保存下来,下次打开程序,历史记录依旧保存
#!/usr/bin/python3 import pickle
import os
from random import randint
from collections import deque def guess_age(age): # 判断输入是否合法
try:
age = int(age)
except:
print('输入错误,重新输入')
return 'error'
if age == real_age:
print('猜对了')
return 'ok'
elif age > real_age:
print('猜大了')
return None
elif age < real_age:
print('猜小了')
return None if __name__ == '__main__':
# 判断历史记录是否存在
if os.path.exists('history'):
try:
# 存在就打开
history = pickle.load(open('history', 'br'))
except:
# 打开失败或者损坏重新定义
history = deque([], 5)
else:
# 不存在声明新的q,[]表示初始列表,5表示长度
history = deque([], 5)
# 生成随机数
real_age = randint(1, 100)
while True:
age = input('(1~100)输入:')
# 查询历史命令
if age == 'history' or age == 'h?':
print(list(history))
continue
result = guess_age(age)
history.append(age)
# 判断是否猜对
if result == 'ok':
break
# 退出程序
if age == 'q':
break
# 把历史数据写入文件
pickle.dump(history, open('history', 'bw'))
python_猜年龄的更多相关文章
- 我的python中级班学习之路(全程笔记第一模块) (第一章)(第2部分:如何设置python中的字体颜色,猜年龄练习题解答,while else语句,pycharm的使用)
第一章: python 基础语法 第 2 部分: 一.猜年龄练习题解答 直接上代码 >>> age = 26 >>> count = 0 >>&g ...
- python 小程序,猜年龄
要求如下:
- 基于虹软 2.0 人脸识别猜年龄 java版 demo
首先感谢虹软,是你们提供这么好的SDK支撑了我们的想象力! 这是一个用javav编写的可视化应用,用户通过自己的脸和计算机进行交互,计算机则通过萌萌女孩的语音和用户对话.核心程序就是利用ArcFace ...
- {python}完成完整的温度转换程序 猜数字游戏(猜价格,猜年龄等) 解析身份证号、学号不同片段的含义
完成完整的温度转换程序 while True: a = int(input("如果是华氏转摄氏,请按1\n,如果是摄氏转华氏,请按2\n")) if a==1: h = float ...
- Python练习-猜年龄的LowB游戏
Alex大神今天让我做一个猜年龄的游戏: 第一个游戏是你只能猜三次:真的很LowB啊~ # 编辑者:闫龙 #猜年龄游戏,3次后程序自动退出! ages = 29; #for循环3次 for i in ...
- python基础代码(猜年龄、从最内层跳出多层循环、简单的购物车程序)
1.猜年龄 , 可以让用户最多猜三次! age = 55 i=0 while i<3: user_guess = int (input ("input your guess:" ...
- day03_11 if语句实现猜年龄01
老男孩猜年龄游戏 age_of_princal = 56 guess_age = int( input(">>:") ) #以下为伪代码 ''' if guess_ag ...
- python猜年龄游戏升级版
猜年龄游戏升级版 要求:允许用户最多尝试3次,每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y,就继续让其猜3次,以此往复,如果回答N,就退出程序,如何猜对了,就直接退出 age = 1 ...
- 用python写了一个猜年龄小游戏
写一个猜年龄游戏: 需要实现用户登录的功能 初始用户登录信息为 {'hades': '13579','nick': '123','ruixing': 'a1','fanping': 'b2'} 登录时 ...
随机推荐
- PyCharm/WebStorm遇到Cannot start internal HTTP server
在开始学习html.css的时候,使用PyCharm 的模拟链接到服务器的时候总是遇到 网上也没有遇到合适的解决方案,遂下载了WebStorm,希望能通过安装配置好一些设置,结果依然不行,只有从头分析 ...
- Ajax的请求方式几传参的区别
Get,Post,Put,Delete请求(ajax)方式的不通. http://blog.jobbole.com/99854/
- 【二分图】ZJOI2007小Q的游戏
660. [ZJOI2007] 小Q的矩阵游戏 ★☆ 输入文件:qmatrix.in 输出文件:qmatrix.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] ...
- Android语音识别--->>RecongnizerIntent实现
首先,咱得先说下注意点: Android中主要通过RecognizerIntent来实现语音识别,其实代码比较简单,但是如果找不到设置,就会抛出异常 ActivityNotFoundException ...
- Nginx常用功能(5)
一.反向代理 1.多域名跳转(location) server www.test.com location / { proxy_pass http://192.168.100.100:8080/web ...
- 大数据学习系列之九---- Hive整合Spark和HBase以及相关测试
前言 在之前的大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 中介绍了集群的环境搭建,但是在使用hive进行数据查询的时候会非常的慢,因为h ...
- beef配合ettercap批量劫持内网的浏览器
先更改首先先打开ettercap的DNS文件进行编辑,在kali linux2.0下的文件路径为/etc/ettercap/etter.dns 在对应的位置添加对应的 标识和IP地址 * 代表所有域名 ...
- js时间戳与日期格式的相互转换
下面总结一下js中时间戳与日期格式的相互转换: 1. 将时间戳转换成日期格式: function timestampToTime(timestamp) { var date = new Date(ti ...
- 2017 Multi-University Training Contest - Team 1 1002&&HDU 6034 Balala Power!【字符串,贪心+排序】
Balala Power! Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
- [bzoj3910] 火车
一开始看错题了... 求经过的道路数量就求个lca,把路径上的点置为已经过的话,可以写一个并查集,把某个点往上连续已经过的一段点并起来. #include<cstdio> #include ...