7-3 值班安排 (python实现) 【函数嵌入】【遍历已修改字典】【字典按值对键排序】

题目

医院有A、B、C、D、E、F、G 7位大夫,在一星期内(星期一至星期天)每人要轮流值班一天,如果已知:
(1)A大夫比C大夫晚1天值班;
(2)D大夫比E大夫晚1天值班;
(3)E大夫比B大夫早2天值班
(4)B大夫比G大夫早4天值班;
(5)F大夫比B大夫晚1天值班;
(6)F大夫比C大夫早1天值班;
(7)F大夫星期四值班。
就可以确定周一至周日的值班人员分别为:E、D、B、F、C、A、G。
编写程序,根据输入的条件,输出星期一至星期天的值班人员。

输入格式:

先输入一个整数n,再输入n组条件,要求能够根据输入的条件确定唯一的值班表,且输入的n组条件中能够直接或间接得到任意两位大夫的关联关系,例如上面的条件(2)直接显示了D与E间的关系,而通过条件(1)、(6)、(5)可以间接得到A与B的关系。
条件的输入格式有2种:
格式1:编号 比较运算符 编号 天数
其中比较运算符有2种:> 或 < ,分别表示“早”或“晚”
例如:A<C1 表示:A大夫比C大夫晚1天值班
格式2:编号 = 数值
例如:F=4 表示:F大夫在星期四值班

输出格式:

输出周一至周日的值班序列。

输入样例:

7
A<C1
D<E1
E>B2
B>G4
F<B1
F>C1
F=4

输出样例:

EDBFCAG

思路讲解:

用字典存每个人值班时间,默认初始值为0

先将每个条件(字符串)储存到一个列表内,若有“=”则直接修改字典对应键的值,再利用已知的值去一一去修改与它有关系的排班,直到全部排完

最后排序后输出

知识点:

1.利用函数将条件转换为需要的算数关系式

2.遍历修改的字典会造成编译错误如图,故改为列表遍历

3.对字典按值对键值、排序

(排序后如果不转换为字典会默认转换为列表,且列表中元素为sorted()里的key)

4.lambda的用法

注意点:

如代码注释

我的变量命名也喜欢用拼音哈哈哈

代码实现:

# 函数作用
# 将输入的条件转换为对应格式存在列表中返回
# 格式:已知的排班=未知的+天数 (符号省略)

def judge(yizhi, lst):
    lst_2 = []
    for i in lst:
        if 'A' <= i <= 'Z' and i != yizhi:
            lst_2.append(i)
            break
    lst_2.append(yizhi)
    if yizhi == lst[0] and lst[1] == '<' or yizhi == lst[2] and lst[1] == '>':
        lst_2.append(int(lst[3]) * -1)
    else:
        lst_2.append(int(lst[3]))
    return lst_2


# 未知=已知+int()
# A<C1 -> A=C+1             < 已知在左边
# C<A1 -> C=A+1 -> A=C+(-1) < 已知在右边
# A>C1 -> A=C-1 -> A=C+(-1) > 已知在左边
# C>A1 -> C=A-1 -> A=C+1    > 已知在右边

n = int(input())
dct = {'A': 0, 'B': 0, 'C': 0, 'D': 0, 'E': 0, 'F': 0}
lst_sum = []
lst_bianli_yizhi = []  # 已经遍历过的已知值(防止反复遍历)
for i in range(n):
    lst_one = input()
    if lst_one[1] == '=':
        dct[lst_one[0]] = int(lst_one[2])
    lst_sum.append(lst_one)
while 0 in dct.values():
    for i in list(dct.keys()):  # 必须转换成列表遍历
        j = dct[i]
        if j != 0 and i not in lst_bianli_yizhi:
            for every in lst_sum:
                if i in every and every[1] != '=':  # 切记别把有“=”的传到函数去
                    lst_2 = judge(i, every)
                    dct[lst_2[0]] = dct[lst_2[1]] + lst_2[2]
            lst_bianli_yizhi.append(i)  # 记得添加
dct_sort = dict(sorted(dct.items(), key=lambda x: x[1], reverse=False))
for i in dct_sort.keys():
    print(i, end='')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/524184.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

手机软件何时统一--桥接模式

1.1 凭什么你的游戏我不能玩 2007年苹果手机尚未出世&#xff0c;机操作系统多种多样&#xff08;黑莓、塞班、Tizen等&#xff09;&#xff0c;互相封闭。而如今&#xff0c;存世的手机操作系统只剩下苹果OS和安卓&#xff0c;鸿蒙正在稳步进场。 1.2 紧耦合的程序演化 手机…

gma 教程:计算标准化降水指数(SPI)

安装 gma&#xff1a;pip install gma &#xff08;依赖的 gdal 需自行安装&#xff09; 本文基于&#xff1a;gma 2.0.8&#xff0c;Python 3.10 本文用到数据请从 gma 网站获取&#xff1a;https://gma.luosgeo.com/UserGuide/climet/Index/SPI.html 。 SPEI 函数简介 gma.c…

Spring 中类似 aBbb 单字母单词序列化与反序列问题

文章目录 前言代码准备问题排查lombok自定义生成 get、set 结合源码解析使用 lombok使用 lombok 自定义生成 user 对象 get、set 方法 如何解决使用注解 JsonProperty("aTest")自定义实现符合 Spring 规范的 get set 方法 个人简介 前言 最近在使用 spring boot mvc…

SpringBoot整合RabbitMQ------------->直连交换!!!

一、创建一个springboot项目 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency> 二、配置RabbitMQ连接 1、在application.properties或application.…

蓝桥杯 - 九宫幻方

解题思路&#xff1a; 枚举法 import java.util.Scanner;//枚举法&#xff0c;采用枚举的方式存储不同的九宫格排列 public class Main {// 定义九个不同的九宫格排列public static int[][] exp {{ 4, 9, 2, 3, 5, 7, 8, 1, 6 },{ 8, 3, 4, 1, 5, 9, 6, 7, 2 },{ 6, 1, 8, 7…

五分钟快速搭建五金行业小程序商城教程解析

作为五金行业的从业者&#xff0c;你可能想要拓展线上业务&#xff0c;提供更方便快捷的购物体验给顾客。而小程序商城成为了一种非常受欢迎的方式。但是&#xff0c;你可能觉得不懂代码无法实现这样的小程序商城。现在&#xff0c;我将通过以下步骤&#xff0c;教你如何在五分…

vitepress系列-02-设置自定义的首页

文章目录 设置自定义的首页进阶版设置首页 设置自定义的首页 初始首页效果&#xff1a; 设置成自己的首页&#xff0c;更改config.mts和 docs/index.md文件&#xff1a; 设置版权 export default defineConfig({lang: en-US,title: "东东爱编码的技术博客",descrip…

【Unity每日一记】鼠标相关API

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

[pyenv] 1. 安装与使用

在看了几个开源的python环境管理器的评论后, 我打算入手 pyenv, 该项目有以下几个优势: 该项目使用纯shell脚本语言实现, 天然亲和linux开发环境.通过设置的PATH环境变量和shims方法隔离的实现方案非常轻量化.子命令引入了compgen补全功能, 对命令输入操作友好.源码开源, 可扩展…

企业进货出货统计软件,简单、好用、高效!

企业进货出货统计是一件比较繁琐的事情&#xff0c;如果还是按照传统的方式&#xff0c;不仅效率低&#xff0c;还会出现漏单&#xff0c;错单的情况发生。如今大多数企业都选择使用进货出货统计软件&#xff0c;简单、好用、还高效&#xff0c;不仅能节省人力&#xff0c;成本…

iOS 应用内网络请求设置代理

主要通过URLSessionConfiguration 的connectionProxyDictionary 属性 为了方便其他同学使用&#xff0c;我们可以通过界面来进行设定&#xff08;是否开启代理、服务端、端口&#xff09;&#xff0c;从而达到类似系统上的设定 具体链接参考&#xff1a;为 iOS 网络请求设置代理…

算法整理:二分查找

二分查找&#xff1a;在有序集合搜索特定值的过程&#xff0c;每次比较之后将查找空间一分为二。 target:要查找的值 index:当前位置 left,right:维持查找空间的指标 mid:用来确定向左查还是向右查的索引 查找空间: [left,right] 二分查找维护left&#xff0c;right&#xff0c…

代码随想录Day27:回溯算法Part3

Leetcode 39. 组合总和 讲解前&#xff1a; 这道题其实在掌握了之前的组合问题之后再看并不是那么难&#xff0c;其关键就在于我们这道题中没有一个特定需要的组合大小&#xff0c;并且列表中的元素是可以重复使用的&#xff0c;那么比如说给的例子中的 输入: candidates [2…

探索基于WebRTC的有感录屏技术开发流程

title: 探索基于WebRTC的有感录屏技术开发流程 date: 2024/4/7 18:21:56 updated: 2024/4/7 18:21:56 tags: WebRTC录屏技术屏幕捕获有感录屏MediaStream实时传输音频录制 第一章&#xff1a;技术原理 WebRTC&#xff08;Web Real-Time Communication&#xff09;是一种开放源…

蓝桥杯真题代码记录(数位排序

目录 1. 题目&#xff1a;2. 我的代码&#xff1a;小结&#xff1a; 1. 题目&#xff1a; 小蓝对一个数的数位之和很感兴趣, 今天他要按照数位之和给数排序。当 两个数各个数位之和不同时, 将数位和较小的排在前面, 当数位之和相等时, 将数值小的排在前面。 例如, 2022 排在 40…

Redis分布式锁的实现核心思路

4.2 、Redis分布式锁的实现核心思路 实现分布式锁时需要实现的两个基本方法&#xff1a; 获取锁&#xff1a; 互斥&#xff1a;确保只能有一个线程获取锁非阻塞&#xff1a;尝试一次&#xff0c;成功返回true&#xff0c;失败返回false 释放锁&#xff1a; 手动释放超时释放&…

宏电“窨井卫士”家族成员大公开:城市地下生命线安全守卫者

窨井是城市建设中非常重要的基础设施 井内的水位、流量、水质情况 能直观反映城市排水管网的运行状态 秉承宏电智能感知技术的积累与沉淀 针对窨井水位、流量、水质监测领域 宏电“窨井卫士”家族产品各显神通 为窨井安全运行保驾护航 窨井水位监测卫士 H1600D智能水位监…

揭秘AI幻觉:GPT-4V存在视觉编码漏洞,清华联合NUS提出LLaVA-UHD

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 GPT-4V 的推出引爆了多模态大模型的研究。GPT-4V 在包括多模态问答、推理、交互在内的多个领…

实战搭建网易有道的QAnything(一) 前提准备工作

前言&#xff1a; 早上地铁上刷到了关于有道的QAnything的介绍&#xff0c;刚好也有搭建一个知识库的想法&#xff0c;既然有想法那就干起来&#xff0c;电脑的操作系统用的win11&#xff0c;显卡用了两块4060。 一、安装windows子系统 1. 开始-》运行-》控制面板 打开原始的控…

LangChain入门:11.Pydantic(JSON)解析器实战

摘要 在数字化营销的浪潮中&#xff0c;自动化内容生成成为了提升效率和用户参与度的利器。本文将详细介绍如何利用LangChain的自然语言处理能力和Pydantic的数据验证特性&#xff0c;构建一个自动化的花店文案生成器。通过这个工具&#xff0c;您可以快速为各种花卉生成吸引人…