《Python程序设计基础》【第六章】习题
#6.1随机生成10个8位密码(包含26个大小写字母和数字)import randomcontent=list()#建立内容列表,包含所有数字和字母,密码从列表中随机抽出元素生成for i in range(0,10):#把0-9输入到内容列表中content.append(i)i=ord("A")#输入A-Zwhile True:content.append(chr(i))i=i+1if i&g
#6.1随机生成10个8位密码(包含26个大小写字母和数字)
import random
content=list() #建立内容列表,包含所有数字和字母,密码从列表中随机抽出元素生成
for i in range(0,10): #把0-9输入到内容列表中
content.append(i)
i=ord("A") #输入A-Z
while True:
content.append(chr(i))
i=i+1
if i>ord('Z'):
break
i=ord("a") #输入a-z(unicode码中字母大小写编排不连续)
while True:
content.append(chr(i))
i=i+1
if i>ord('z'):
break
#生成密码
password=list()
for i in range(10):
eachpassword=list()
for j in range(8):
eachpassword.append(random.choice(content))
password.append(eachpassword)
for eachpassword in password:
print(eachpassword)
输出结果:
['X', 'P', 'y', 'T', 'k', 'U', 4, 'N']
['J', 'S', 'P', 'J', 'J', 8, 'J', 'A']
['J', 'r', 8, 'v', 'I', 'Y', 'N', 0]
['U', 'q', 'h', 9, 'F', 'P', 'f', 7]
[8, 'X', 'b', 'q', 'T', 'Y', 'v', 'J']
['T', 'i', 2, 9, 'K', 'j', 'A', 'F']
['S', 'U', 'Z', 'u', 'a', 'r', 'V', 's']
[0, 6, 'N', 'N', 'g', 1, 'V', 'r']
['a', 'Q', 'o', 'f', 'b', 'f', 'A', 'a']
['Y', 'J', 'G', 'T', 'O', 'A', 7, 'Q']
#6.2重复元素判定。编写一个函数,接受列表作为参数,若有重复元素则返回True.同时编写测试程序
def check(a):
repeat=0 #作为是否出现重复元素的布尔值
testlist=list()
for i in a:
if i in testlist: #出现重复元素
repeat=1
break
else:
testlist.append(i)
return (bool(repeat))
#测试部分
list1=[1,2,3]
list2=[1,2,2,3]
print(check(list1))
print(check(list2))
输出结果:
False
True
#6.5生日悖论。生日悖论指如果一个房间里有23人或以上,那么至少有两个人生日相同的概率大于50%。编写程序,输入在不同随机样本数量下,23个人中石少两个人生日相同的概率
import random
all_birth=range(1,366) #构建包含所有生日的数组
#检测一个样本中是否出现同一天生日的情况
def check():
a=set()
for i in range(23):
a.add(random.choice(all_birth))
if len(a)<23:
return 1
else:
return 0
#测试函数
def test(N):
n=0
for i in range(N):
n+=check()
print(n/N)
#代入不同样本数量进行测试
test(100)
test(1000)
test(10000)
输出结果:
0.42
0.512
0.5061
更多推荐
所有评论(0)