赞
踩
有三间办公室,六位老师,随机给六位老师分配随机的办公室,办公室可以为空置
1.先确定每个办公室分配的人数
2.根据随机得到的分配人数,划分为三种分配类型:一间的,两间的,三间的
3.给老师与办公室分别编号,利用集合无序性达到随机
4.将集合转换为列表,方便取值
5.根据每个办公室分配的人数决定每个办公室取教师列表的长度
import random classN = random.randint(1, 6) # 办公室分配的人数 print(classN) setT = {'a', 'b', 'c', 'd', 'e', 'f'} # 教师编号集合 listT = list(setT) # 将教师集合转换为教师列表 setC = {'A', 'B', 'C'} # 办公室集合 listC = list(setC) if 1 <= classN < 6: classNf = 6 - classN # 第二办公室与第三办公室人数之和 tech1 = [listT[i] for i in range(classN)] # 第一间办公室的老师人员 tech2 = [listT[i] for i in range(classNf)] # 第二间办公室的老师人员 print(f'第一间办公室人数:{classN},老师是:{tech1}.办公室是:{listC[0]}') print(f'第二间办公室人数为:{classNf},老师是:{tech2},办公室是:{listC[1]}') if 6-classN - classNf > 0: ran = 6 - classN - classNf tech3 = [listT[i] for i in range(ran)] # 第三间办公室的老师人员 print(f'第三间办公室的人数为:{ran},老师是:{tech3},办公室是:{listC[2]}') else: print(f'第一间办公室人数:{classN},老师是:{listT},办公室是{listC[0]}')
#方法二
import random
offs=[[],[],[]]
names=['a','b','c','d','e','f']
for i in names:
index=random.randint(0,2)
offs[index].append(i)
of=1
for i in offs:
print(f"办公室 {of} 分配的人数 {len(i)},分别是 {','.join(i)}")
of+=1
#方法三
import random
names=['a','b','c','d','e','f']
for i in names:
print(f'{i} 在办公室{random.choice([1,2,3])}')
记 random取整数
random的范围是左闭右开 randint是左闭右闭(没有步长参数) randrange是左闭右开(可以取步长)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。