「已注销」 2023-01-01 11:45 采纳率: 80.6%
浏览 94
已结题

python排班问题?

题干:有如下排班表,现增加条件,让钱和周不能在同一天值班(即他们俩不能同时在周一和周六值班。不允许直接修改字典)。怎么在代码中加条件?


```python
from itertools import permutations

week_list = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
#字典记的是每个人能上班的时间
dic = {
    "赵": ["星期二", "星期四"],
    "钱": ["星期一", "星期六"],
    "孙": ["星期三", "星期日"],
    "李": ["星期五"],
    "周": ["星期一", "星期四", "星期六"],
    "吴": ["星期二", "星期五"],
    "陈": ["星期三", "星期六", "星期日"],
}

for names in permutations(dic):
    res = []
    for i, j in enumerate(names):
        if week_list[i] not in dic[j]:
            break
        res.append(f"{week_list[i]}: {j}")
    else:
        print(*res, sep=", ")


```

  • 写回答

1条回答 默认 最新

  • 流比 2023-01-01 19:46
    关注
    
    from itertools import permutations
     
    week_list = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
    #字典记的是每个人能上班的时间
    dic = {
        "赵": ["星期二", "星期四"],
        "钱": ["星期一", "星期六"],
        "孙": ["星期三", "星期日"],
        "李": ["星期五"],
        "周": ["星期一", "星期四", "星期六"],
        "吴": ["星期二", "星期五"],
        "陈": ["星期三", "星期六", "星期日"],
    }
    
    for names in permutations(dic):
        res = []
        for i, j in enumerate(names):
            if week_list[i] not in dic[j]:
                break
            res.append(f"{week_list[i]}: {j}")
            # 判断周和钱是否都在同一天值班
            if j == "周" and week_list[i] in dic["钱"]:
                break
            if j == "钱" and week_list[i] in dic["周"]:
                break
        else:
            print(res)
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月9日
  • 已采纳回答 1月1日
  • 修改了问题 1月1日
  • 修改了问题 1月1日
  • 展开全部