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来解决。快捷且方便。[手动狗头]