第四章课后习题-用Python实现羊车门问题,最大公约数计算,猜字游戏,统计不同字符个数。
目录
前言
4.1 猜数游戏
random库中的两个常用函数:
eval()函数
4.2 统计不同字符个数
两个内置的字符串处理函数:
chr(x)
ord(x)
4.3 最大公约数的计算
4.5 猜字游戏续
4.6 羊车门问题
总结
前言
案例包括猜数游戏,统计不同字符个数,最大公约数计算,羊车门问题等几个问题的源代码。每道题中涉及的函数与其他知识点,会在代码后列出解释及相应的案例,如果看完代码,有疑惑,可以进行查阅。
4.1 猜数游戏
题目:程序中预设一个0~9之间的整数,让用户通过键盘输入所猜的数,如果大于预设的数,显示“遗憾,太大了”;小于预设的数,显示“遗憾,太小了”,如此循环,直至猜中该数,显示“预测N次,你猜中了!”,其中N是用户输入数字的次数。
import random
random.seed(250)#此处设种子数为250
a = random.randint(0,9)#随机产生一个预设整数
N = 1#用户的猜测次数
b = eval(input('请输入一个0-9的整数:'))#用户输入的猜测值
while(b!=a):#猜测值与预设值不相等,一直循环if (b > a):N += 1b = eval(input("遗憾,你的预测太大了,请重新输入:"))else:N += 1b = eval(input("遗憾,你的预测太小了,请重新输入:"))
print("恭喜你猜对了,共猜{}次".format(N))#循环结束,输出猜测次数。
random库中的两个常用函数:
seed(a=None)
初始化随机数种子,默认值为当前系统时间。通俗来说,生成随机数之前可以通过seed()函数指定随机数种子,随机数种子一般是一个整数,只要种子相同,每次生成的随机数序列也相同。这种情况便于测试和同步数据。
示例如下:
>>>seed(250)#随机数种子赋值250
>>>"{}".format(randint(0,9))
'4'
>>>"{}".format(randint(0,9))
'0'
>>>seed(250)#再次给随机数种子赋值250
>>>"{}".format(randint(0,9))
'4'
#可以看到,在赋值相同种子数后,产生的随机数也相同
randint(a,b)
生成一个[a,b]之间的整数
>>>randint(0,9)
4
eval()函数
作用:将输入的字符串转变为Python语句,并执行该语句
>>>x = 1
>>>eval("x+1")
2
4.2 统计不同字符个数
题目:用户从键盘输入一行字符,编写一个程序,统计并输出其中英文字符、数字、空格和其他字符的个数。
str = input("请输入包含任意符号的一串字符:")
digit = 0
hanzi = 0
letter_upper = 0
letter_lower = 0
other = 0
space = 0
for i in str:if chr(48)<=i<=chr(57):#判断数字digit += 1elif i ==' ':#判断空格space +=1elif 97<=ord(i)<=122:#判断小写字母letter_lower += 1elif 65<=ord(i)<=90:#判断大写字母数letter_upper += 1elif 19968<=ord(i)<=40869:#判断汉字hanzi += 1else:#其他字符other += 1
print("digit={},hanzi={},upper_letter={},lower_letter={},other={},"\"space={}".format(digit,hanzi, letter_upper,letter_lower,other,space))
两个内置的字符串处理函数:
chr(x)
返回Unicode编码x对应得单字符
ord(x)
返回字符x对应的Unicode编码
4.3 最大公约数的计算
a = eval(input("请输入两个整数:"))
b = eval(input(""))
c = a
d = b
if(a>=b):r = a%b
else:r = b%at = bb = aa = t
while(r!=0):a = bb = rr = a % b
print("{}和{}的最大公约数是{},最小公倍数是{:.0f}".format(c,d,b,c*d/b))
4.5 猜字游戏续
问题:对于程序练习题4.4程序,当用户输入的不是整数(如字母浮点数等)时,程序会终止执行退出。改编该程序,当用户输入出错时给出“输入内容必须为整数!”的提示,并让用户重新输入。
import random
a = random.randint(0,100)#随机产生一个整数
N = 1#用户的猜测次数
b = eval(input('请输入一个0-9的整数:'))
while(b!=a):try:if (type(b) == type(100)):if (b > a):N += 1b = eval(input("遗憾,你的预测太大了,请重新输入:"))else:N += 1b = eval(input("遗憾,你的预测太小了,请重新输入:"))else:b = eval(input('请重新输入一个0-100的整数'))except NameError:print("输入必须为整数")b = eval(input("请重新输入:"))
print("恭喜你猜对了,共猜{}次".format(N))#循环结束,输出猜测次数
4.6 羊车门问题
问题:有3扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择。请问:参赛者更换选择后能否增加猜中汽车的机会?
请使用random对个随事进行预测,分别输出参赛者改变选择和坚持选择获胜的机率。
import random
a = eval(input("请输入总共选择多少次:"))
num1 ,num2 = 0,0#选手不更换选择的情况
for i in range(a):people = random.randint(1, 3)#1代表车,2,3代表山羊if people == 1:num1 += 1#选中时次数加一
print("不更换选择时的选中车的概率是{:.3f}".format(num1/a))
#选手更换选择的情况:
for i in range(a):people = random.randint(1, 3) # 1代表车,2,3代表山羊if people == 2:num2 += 1#当人选中山羊且选择更换时,主持人已经打开了另一扇山羊,所以一定可以选中汽车elif people == 3:num2 += 1#同理else:pass#此时人选中的是汽车,当他选择更换时,则错过机会
print("更换选择时她选中汽车的概率是:{:.3f}".format(num2/a))
总结
以上就是本节内容,仅仅简单介绍了random的简单应用案例,代码不足的地方还请评论区告诉我,或者有任何疑问都可以来留言。
第四章课后习题-用Python实现羊车门问题,最大公约数计算,猜字游戏,统计不同字符个数。相关推荐
- 第四章课后习题及答案
第四章课后习题答案 转载于:https://www.cnblogs.com/hhdn/archive/2007/05/13/744537.html
- 《计算机网络技术》第四章课后习题答案(全)
<计算机网络技术>第四章课后习题答案(全) 1 . IEEE802委员会提出将数据链路层划分为哪两个层次,每个层次的功能各是什么? 答: IEEE802委员会提出将数据链路层划分为两个子层 ...
- 《计算机组成原理》第二版第四章课后习题解答
<计算机组成原理>第四章课后习题解答 本文答案均为网上答案,作者仅将其补全组合在一起,错误之处欢迎指正. 1 .解释下列概念 主存. 辅存. Cache . RAM . SR ...
- 尚学堂java实战第四章课后习题
尚学堂java实战第四章课后习题 文章中的题目答案仅供参考 选择题答案: 1.B 解析:一个java类必然存在构造器,即使没有定义构造器,也会存在一个默认的无参构造器. 2.D 3.AC 解析: A( ...
- C语言程序设计第五版 谭浩强 第四章 课后习题 答案
谭浩强C语言程序设计第五版 第4章 课后习题 答案 点我看视频讲解+可运行源码 记得一键三连哦 第四章 选择结构程序设计 1. 什么是算术运算?什么是关系运算?什么是逻辑运算? [答案解析] 算熟运算 ...
- 工程伦理(2021春)第四章课后习题答案
工程伦理(2021春)第一章课后习题答案 工程伦理(2021春)第二章课后习题答案 工程伦理(2021春)第三章课后习题答案 工程伦理(2021春)第五章课后习题答案 工程伦理(2021春)第六章课后 ...
- 《Python语言程序设计》王恺 机械工业出版社 第四章课后习题答案
第四章 面向对象 4.5 课后习题 (1)类和对象的关系即数据类型与变量的关系,类规定了可以用于存储什么数据,而对象用于实际存储数据,每个对象可存储不同的数据 (2)类中包含属性和方法.属性对应一个类 ...
- 数据库系统概论 第四章课后习题(部分)
本文是<数据库系统概论>的第四章的部分课后习题,题目来源:[2019-2020春学期]数据库作业12:第四章:数据库安全性 习题
- HTML+CSS+JavaScript网页制作案例教程-黑马程序员-第四章课后习题(播放器图标)
黑马程序员编著的教材 HTML+CSS+JavaScript网页制作案例教程 第四章:播放器图标-课后习题参考代码 ........ 记得 关注,收藏,评论哦,作者将持续更新.... 我自己做的效果 ...
最新文章
- Windows Azure AppFabric概述
- mysql驱动不支持批处理_ADO.NET 中可以发送包含多个SQL语句的批处理脚本到SQL Server,但是用MySQL的ODBC驱动不行...
- 【python】数据结构与算法之选择排序
- Linux课程第二十一天学习笔记
- PHP性能调优---php-fpm中启用慢日志配置(用于检测执行较慢的PHP脚本)
- number six
- TikZ绘图示例——尺规作图:直角的画法(二)
- 神经网络的输出层有哪些_深度学习的数学-神经网络、输入层、隐藏层、输出层...
- Linux下安装和卸载jdk及环境配置
- 20191202_2_识别偷税漏税人
- 【题解】Making The Grade(DP+结论)
- XF660R型号良田高拍仪接口开发,通过图片文件的二进制数据进行图片上传
- SVM——支持向量回归(SVR)
- 采购订单审批与采购申请审批
- 聚类(四)—— 基于密度的聚类
- matlab excel操作,Matlab读取excel文件里数据的操作流程
- 亿级流量网站架构核心技术 跟开涛学搭建高可用高并发系统.
- 社区医生工作平台-体检软件
- 打造至臻拍摄体验 vivo X60 Pro+专业影像旗舰发布
- python实现圆周率计算