您的位置:首页 > 编程语言 > Python开发

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元素随机且不重复的一个列表。

我的代码如下:

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: