当前位置: 高中信息技术 / 综合题
  • 1. (2023高二下·丽水期末) 某医院挂号系统有两种挂号方式:预约挂号(预约就诊时间,需提前一天完成)和直接挂号(当天8:00后在服务台排队挂号)。医生8:00开诊;预约挂号患者在预约的就诊时间到达后,优先就诊;一位患者就诊结束后,下一位患者再开始就诊。

    医院为提升服务质量,编写程序模拟就诊顺序。现获取某医生早上就诊患者的数据,分别为姓名、预约或挂号时间、就诊时长(单位:分钟)。预约挂号数据(准时到达人员数据)如图a所示,直接挂号数据如图b所示。运行程序,输出前三位就诊顺序名单,如图c所示。

    图 a

    图 b

    图 c

    1. (1) 根据上图数据,预约挂号人员江浩华排在第位就诊。
    2. (2) 定义如下sort(lst)函数,参数lst的每个元素都包含3个数据项,分别为姓名、预约时间、就诊时长。函数功能是将lst的元素根据预约时间进行升序排列,函数返回lst。函数代码如下,请在划线处填入合适的代码。

      def sort(lst) :

          n=len(lst)-1

          for i in range(n-1) :

              for j in range(n,i+1,-1) :

                  if:

                      lst[j],lst[j-1]=lst[j-1],lst[j]

          return lst

    3. (3) 实现模拟输出就诊顺序的部分 Python 程序如下,请在划线处填入合适的代码。

      def insert(lst,i,head) :

          curtime=lst[head] [1]+int(lst[head] [2])     #就诊结束时间

          if

              lst[i].append(head)

              head=i

              curtime=lst[i] [1]+int(lst[i][2])

              i+=1

         

          q=lst[p] [3]

          while i<=len(lst)-1 :

              if curtime>=lst[q][1] and q!=-1 :        #预约人员优先就诊

                  p=q

                  q=lst[p] [ ]3

                  curtime+=int(lst[p][2])

              elif curtime>=lst[i] [1]  or  q==-1 :

                 

                  lst[i].append(q)

                  curtime+=int(lst[i] [2])

                  p=i

                  i+=1

              elif lst[q] [1]<=lst[i] [1]:

                  curtime=lst[q] [1]

              else :

                  curtime=lst[i] [1]

          return lst

      #预约挂号数据转换为列表 lst,并将时间转换为分钟,如 08:30 转为 510,代码略

      lst=sort(lst)

      n=len(lst)-1

      for i in range(1,n) :

          lst[i].append(i+1)                          #lst[i]追加一个元素 i+1

      lst[n].append(-1)

      #将门诊挂号数据合并至列表 lst 中,列表 lst数据如图d所示,代码略 head=1

      lst1=insert(lst,n+1,head)

      #输出就诊顺序,代码略

      图 d

微信扫码预览、分享更方便