鱼C论坛

 找回密码
 立即注册
查看: 2262|回复: 7

[已解决]请教在调用随机模块如何能够让数据添加到多个列表至少大于N个数据

[复制链接]
发表于 2021-4-25 19:03:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
'''
8位老师,3个办公室,随机分配8位老师到3个办公室
1.需要有8位老师的数据
2.验证办公室数据

3.每个办公室最起码要一人 ##求思路这个地方该怎么写,谢谢指点
'''
import random
teachers =['A','B','C','D','E','F','G','H'] #八位老师
offices =[[],[],[]] #三间教室
for teacher in teachers:    #先遍历老师的名字
    num = random.randint(0,2)   #随机分配3间教室
    offices[num].append(teacher)    #把老师随机添加到三间教室
i = 1   #办公室的序号
for office in offices:  #把每个办公室的老师遍历出来
    print(f'办公室的人数是{len(office)},老师分别是:')
    for tea in office:  #把每间办公室的名字打印出来
        print(tea)
    i += 1

求助,如何实现第3步骤,就是保证分配到每个办公室的人数至少是一人
求助,如何实现第3步骤,就是保证分配到每个办公室的人数至少是一人
求助,如何实现第3步骤,就是保证分配到每个办公室的人数至少是一人
最佳答案
2021-4-26 15:48:43
import random


def group():  # 分组
    offices = office1, office2, office3 = [], [], []
    for i in range(1,9):
        random.choice(offices).append(i)
    return offices

def check(offices):  # 验证
    for each in offices:
        print(len(each))
        if len(each) == 0:
            return True
    return False

while True:
    offices = group()
    if check(offices):
        continue
    else:
        break
print(offices)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-26 15:48:43 | 显示全部楼层    本楼为最佳答案   
import random


def group():  # 分组
    offices = office1, office2, office3 = [], [], []
    for i in range(1,9):
        random.choice(offices).append(i)
    return offices

def check(offices):  # 验证
    for each in offices:
        print(len(each))
        if len(each) == 0:
            return True
    return False

while True:
    offices = group()
    if check(offices):
        continue
    else:
        break
print(offices)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-26 18:31:40 | 显示全部楼层
OMG。。审错题。。我以为要求所有可能的分配方案。。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-26 19:07:47 | 显示全部楼层
你可以将随机3个分别分配到3个房间,剩下5位老师再随机分配
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-27 19:11:39 | 显示全部楼层
qq1151985918 发表于 2021-4-26 19:07
你可以将随机3个分别分配到3个房间,剩下5位老师再随机分配

这这这还是有点难度啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-27 19:39:42 | 显示全部楼层
偏爱小仙女 发表于 2021-4-27 19:11
这这这还是有点难度啊

这有难度吗?很简单吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-27 19:49:19 | 显示全部楼层
偏爱小仙女 发表于 2021-4-27 19:11
这这这还是有点难度啊

'''
8位老师,3个办公室,随机分配8位老师到3个办公室
1.需要有8位老师的数据
2.验证办公室数据

3.每个办公室最起码要一人 ##求思路这个地方该怎么写,谢谢指点
'''
import random
teachers =['A','B','C','D','E','F','G','H'] #八位老师
offices =[[],[],[]] #三间教室

rand_teachers = random.sample(teachers,8) #将老师顺序随机打乱

for office,teacher in zip(offices,rand_teachers[:3]):
    office.append(teacher)
    # 现将打乱顺序的前三名老师分别分配到三个房间,一间一人
    
for teacher in rand_teachers[3:]:    #先遍历老师的名字(后五位老师)
    num = random.randint(0,2)   #随机分配3间教室
    offices[num].append(teacher)

i = 1   #办公室的序号
for office in offices:  #把每个办公室的老师遍历出来
    print(f'办公室的人数是{len(office)},老师分别是:')
    for tea in office:  #把每间办公室的名字打印出来
        print(tea)
    i += 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-28 01:26:15 | 显示全部楼层

大佬大佬,膜拜了,确实是好思路啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 23:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表