Python排值日,2女5男,五个任务有:拖地3,扫地1,擦柜子1,擦桌子1,整理大厅1

问题遇到的现象和发生背景

Python排值日,2女5男,五个任务有:拖地3人,扫地1人,擦柜子1人,擦桌子1人,整理大厅1人
要求:女的不拖地不扫地

问题相关代码,请勿粘贴截图

import random
people = ['1','2','3','4','5','6','7']
works = ['拖地','扫地','整理前台','擦柜子','擦桌子']
for i in people:
    random.sample(people,1)
    if people 
        print("擦桌子:",people)
    else
        print("扫地:",people)
运行结果及报错内容

没做出来,求指点

我的解答思路和尝试过的方法

工作任务也用列表合适吗?

我想要达到的结果

拖地:1,3,4
扫地:2
擦桌子:5
擦柜子:6
大厅:7

只对数据进行一次随机是不是好点,望博主采纳。🤞


import random

# 假设6,7为女生
p = [1, 2, 3, 4, 5, 6, 7]
while True:
    random.shuffle(p)
    a = len([i for i in p[:4] if i < 6])
    if a == 4:
        break

print(f'拖地:{",".join(str(i) for i in p[:3])}' + "\n"
      f'扫地:{p[3]}'+ "\n"
      f'整理前台:{p[4]}'+ "\n"
      f'擦柜子:{p[5]}'+ "\n"
      f'擦桌子:{p[6]}')

假设1-5为男生,6-7为女生,

import random
people = ['1','2','3','4','5','6','7']
works = ['拖地','扫地','整理前台','擦柜子','擦桌子']
boys = people[0:5]
girls = people[5:]
# 随机打乱男生
random.shuffle(boys)
print("拖地:", boys[0], ",", boys[1], ",", boys[2])
print("扫地:", boys[3])
others =[boys[4], girls[0], girls[1]]
# 随机打乱剩余的人
random.shuffle(others)
print("擦桌子:", others[0])
print("擦柜子:", others[1])
print("大厅:", others[2])

觉得有帮助记得采纳本答案哦!

研究了 下逻辑,
定义了工作需求列表和女生列表
这样应该OK了。


import random

people = ['1', '2', '3', '4', '5', '6', '7']
# 定义工作组及人数需求
works = {'拖地':3, '扫地':1, '整理前台':1, '擦柜子':1, '擦桌子':1}
# 女生列表, 1,2 为女生, 这个可以按需要改
female = ['1','2']
for w in works:
    if w in[ '拖地' , '扫地']:
        p_need = works[w]
        p_list = []
        while p_need>0:
            p = people[random.randint(0,len(people)-1)]
            if p in female:
                continue
            else:
                p_list.append(p)
                people.remove(p)
                p_need = p_need - 1
        print(w, ",".join(p_list))
    else:
        p_need = works[w]
        p_list = []
        while p_need > 0:
            p = people[random.randint(0, len(people)-1)]
            p_list.append(p)
            people.remove(p)
            p_need = p_need - 1
        print(w, ",".join(p_list))

你这个列表, 1-7 , 那个是男, 那个是女

这个可以考虑用prolog来解决。快捷且方便。[手动狗头]