python核心编程 7-14
2015-10-16 20:46
525 查看
7–13. 随机数。修改练习 5-17 的代码:使用 random 模块中的 randint()或 randrange()方法生成一个随机数集合: 从 0 到 9(包括 9)中随机选择,生成 1 到 10 个随机数。这些数字组成集合A(A 可以是可变集合,也可以不是)。同理,按此方法生成集合 B。每次新生成集合
A 和 B 后,显示结果 A | B 和 A & B
7–14. 用户验证。修改前面的练习,要求用户输入 A | B 和 A & B 的结果,并告诉用户他(或她)的答案是否正确,而不是将
A | B 和 A & B 的结果直接显示出来。如果用户回答错误,允许他(或她)修改解决方案,然后重新验证用户输入的答案。如果用户三次提交的答案均不正确,程序将显示正确结果。
这题用到random模块,库的介绍如下:
random库
random.seed()设定种子,linux下默认是os.urandom()提供随机源,就是种子,也有系统是把系统时间当成种子。使用相同种子在系统中所产生的数是想同的。
还有两个重要的类是random.Random类和random.SystemRandom类。
一般常用函数:
random.random()
返回n,则 0 <= n < 1的小数。
random.uniform(a,b)
返回n ,则 a <= n <= b的浮点数。
random.randint(a,b)
返回n ,则a <= n <= b的整数。
random.choice(sequence)
随机选择函数,从序列中取出一个随机值,不会改变原序列。
random.shuffle()
洗牌函数,将列表的顺序打乱,重新形成一个无序的列表。
random.randrange()和range()类似.(!但是我发现for循环里不能直接用random.randrange要用range(random.randrange),好坑)
random.randrange(10)
random.randrange(20,41)
random.randrange(0,101,2)
random.randrange(20,60,3)
random.sample(seq,n)
返回一个长度为n的所有元素为seq元素随机且不重复的一个列表。
我的代码如下:
A 和 B 后,显示结果 A | B 和 A & B
7–14. 用户验证。修改前面的练习,要求用户输入 A | B 和 A & B 的结果,并告诉用户他(或她)的答案是否正确,而不是将
A | B 和 A & B 的结果直接显示出来。如果用户回答错误,允许他(或她)修改解决方案,然后重新验证用户输入的答案。如果用户三次提交的答案均不正确,程序将显示正确结果。
这题用到random模块,库的介绍如下:
random库
random.seed()设定种子,linux下默认是os.urandom()提供随机源,就是种子,也有系统是把系统时间当成种子。使用相同种子在系统中所产生的数是想同的。
还有两个重要的类是random.Random类和random.SystemRandom类。
一般常用函数:
random.random()
返回n,则 0 <= n < 1的小数。
random.uniform(a,b)
返回n ,则 a <= n <= b的浮点数。
random.randint(a,b)
返回n ,则a <= n <= b的整数。
random.choice(sequence)
随机选择函数,从序列中取出一个随机值,不会改变原序列。
random.shuffle()
洗牌函数,将列表的顺序打乱,重新形成一个无序的列表。
random.randrange()和range()类似.(!但是我发现for循环里不能直接用random.randrange要用range(random.randrange),好坑)
random.randrange(10)
random.randrange(20,41)
random.randrange(0,101,2)
random.randrange(20,60,3)
random.sample(seq,n)
返回一个长度为n的所有元素为seq元素随机且不重复的一个列表。
我的代码如下:
import random def randset(): aset=set() for i in range(random.randrange(10)):#居然要用 range(random.randrange(9)) aset.add(random.randint(0,9)) return aset def inputset(prompt): string=input("输入你认为的%s,元素之间用','分隔:"%prompt) lens=len(string) count=0 aset=set() while count<lens: if string[count] in '1234567890': aset.add(int(string[count])) count=count+1 return aset if __name__ == '__main__': seta=randset() setb=randset() print ('A:',seta) print ('B:',setb) seta,setb=seta|setb,seta&setb count=0 while count<3: setc=inputset('A|B') setd=inputset('A&B') if (seta==setc and setb==setd )or (setb==setc or seta==setd): print ('bingo') break else: count=count+1 print ('guess again') if count==3: print ('A|B:',seta) print ('A&B:',setb)
相关文章推荐
- Flask基本结构(一)
- python核心编程 习题7-10
- python利用basemap叠加地图
- Python学习之列表排序
- AIX 7.1 install python
- 八大排序算法的 Python 实现
- python模块示例
- SmartFoxServer 2x的pythonclient
- python下smtp发送邮件
- 通过SSH远程使用ipython notebook
- <LeetCode><Easy> 112 Path Sum --二叉树深度优先遍历
- python核心编程 练习7-9
- <LeetCode><Easy> 118 Pascal's Triangle
- Python游戏服务器开发日记(八)整体方案改变了……
- <LeetCode><Easy> 118 Pascal's Triangle II
- 用python读写yaml/json文件
- python核心编程 练习题7.8
- 详解使用Python处理文件目录的相关方法
- 详解在Python程序中自定义异常的方法
- Python之BeautifulSoup模块的简单使用