#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


Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐