目录

前言

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实现羊车门问题,最大公约数计算,猜字游戏,统计不同字符个数。相关推荐

  1. 第四章课后习题及答案

    第四章课后习题答案 转载于:https://www.cnblogs.com/hhdn/archive/2007/05/13/744537.html

  2. 《计算机网络技术》第四章课后习题答案(全)

    <计算机网络技术>第四章课后习题答案(全) 1 . IEEE802委员会提出将数据链路层划分为哪两个层次,每个层次的功能各是什么? 答: IEEE802委员会提出将数据链路层划分为两个子层 ...

  3. 《计算机组成原理》第二版第四章课后习题解答

    <计算机组成原理>第四章课后习题解答 本文答案均为网上答案,作者仅将其补全组合在一起,错误之处欢迎指正. 1 .解释下列概念   主存.   辅存.  Cache .  RAM .  SR ...

  4. 尚学堂java实战第四章课后习题

    尚学堂java实战第四章课后习题 文章中的题目答案仅供参考 选择题答案: 1.B 解析:一个java类必然存在构造器,即使没有定义构造器,也会存在一个默认的无参构造器. 2.D 3.AC 解析: A( ...

  5. C语言程序设计第五版 谭浩强 第四章 课后习题 答案

    谭浩强C语言程序设计第五版 第4章 课后习题 答案 点我看视频讲解+可运行源码 记得一键三连哦 第四章 选择结构程序设计 1. 什么是算术运算?什么是关系运算?什么是逻辑运算? [答案解析] 算熟运算 ...

  6. 工程伦理(2021春)第四章课后习题答案

    工程伦理(2021春)第一章课后习题答案 工程伦理(2021春)第二章课后习题答案 工程伦理(2021春)第三章课后习题答案 工程伦理(2021春)第五章课后习题答案 工程伦理(2021春)第六章课后 ...

  7. 《Python语言程序设计》王恺 机械工业出版社 第四章课后习题答案

    第四章 面向对象 4.5 课后习题 (1)类和对象的关系即数据类型与变量的关系,类规定了可以用于存储什么数据,而对象用于实际存储数据,每个对象可存储不同的数据 (2)类中包含属性和方法.属性对应一个类 ...

  8. 数据库系统概论 第四章课后习题(部分)

    本文是<数据库系统概论>的第四章的部分课后习题,题目来源:[2019-2020春学期]数据库作业12:第四章:数据库安全性 习题

  9. HTML+CSS+JavaScript网页制作案例教程-黑马程序员-第四章课后习题(播放器图标)

    黑马程序员编著的教材  HTML+CSS+JavaScript网页制作案例教程 第四章:播放器图标-课后习题参考代码 ........ 记得 关注,收藏,评论哦,作者将持续更新.... 我自己做的效果 ...

最新文章

  1. Windows Azure AppFabric概述
  2. mysql驱动不支持批处理_ADO.NET 中可以发送包含多个SQL语句的批处理脚本到SQL Server,但是用MySQL的ODBC驱动不行...
  3. 【python】数据结构与算法之选择排序
  4. Linux课程第二十一天学习笔记
  5. PHP性能调优---php-fpm中启用慢日志配置(用于检测执行较慢的PHP脚本)
  6. number six
  7. TikZ绘图示例——尺规作图:直角的画法(二)
  8. 神经网络的输出层有哪些_深度学习的数学-神经网络、输入层、隐藏层、输出层...
  9. Linux下安装和卸载jdk及环境配置
  10. 20191202_2_识别偷税漏税人
  11. 【题解】Making The Grade(DP+结论)
  12. XF660R型号良田高拍仪接口开发,通过图片文件的二进制数据进行图片上传
  13. SVM——支持向量回归(SVR)
  14. 采购订单审批与采购申请审批
  15. 聚类(四)—— 基于密度的聚类
  16. matlab excel操作,Matlab读取excel文件里数据的操作流程
  17. 亿级流量网站架构核心技术 跟开涛学搭建高可用高并发系统.
  18. 社区医生工作平台-体检软件
  19. 打造至臻拍摄体验 vivo X60 Pro+专业影像旗舰发布
  20. python实现圆周率计算

热门文章

  1. 第四章分支结构程序设计
  2. mysql数据创建用户及授权
  3. 华为机试真题 Java 实现【数字涂色】
  4. SSRF在有无回显方面的利用及其思考与总结
  5. 计算机无法删除用户,怎么彻底删除一个用户
  6. 给大学后端小白的一些忠告
  7. 流量/访客数/曝光量/浏览量/pv/uv
  8. 一文搞懂JVM架构:微信抢红包实战案例
  9. (转载)最值得看的一维傅里叶分析(时域如何转频域)
  10. 算法题(2)力扣第n位数字