函子蛋糕 2023-01-01 11:45 采纳率: 80.6%
浏览 92
已结题

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日
  • 展开全部

悬赏问题

  • ¥15 如果要做一个老年人平板有哪些需求
  • ¥15 k8s生产配置推荐配置及部署方案
  • ¥15 matlab提取运动物体的坐标
  • ¥15 人大金仓下载,有人知道怎么解决吗
  • ¥15 一个小问题,本人刚入门,哪位可以help
  • ¥15 python安卓开发
  • ¥15 使用R语言GD包一直不出结果
  • ¥15 计算机微处理器与接口技术相关问题,求解答图片的这个问题,有多少个端口,端口地址和解答问题的方法和思路,不要AI作答
  • ¥15 如何根据一个截图编写对应的HTML代码
  • ¥15 stm32标准库的PID角度环