当前位置: 高中信息技术 / 综合题
  • 1. (2023高三下·浙江月考) 要向可容纳88966名观众的卢赛尔球场派送外卖是一项艰巨的任务,为了方便外卖派送,将球场观众席划分为A、B、C、D、E、F、G、H等8个区。派单平台可以根据各区域订单数量安排派送人员,以提高外卖派送效率(一个派送人员只安排一个区域),平台根据订单总量与空闲派送人员数量计算人均派单量,按平均派单数计算各区域所需派送人员。但按此方法分配派送人员,人员总数可能超过空闲派送人员数,则删除超额派送人数。删除规则如下:每个有订单的区域至少保留一个派送人员;每个区域最多减去一个派送人员,优先删除派单尾数最少的区域中的派送人员;如果派单尾数相同,则在分配到派送人员数最多的区域中去掉一个派单人员。例如:A~H区域的订单数量分别为[468,329,392,247,38,180,263,82],此时空闲派单人员数为30人,人均派单数为67,则各区域分配的派单人员数量分别为7、5、6、4、1、3、4、2,合计32个派送人员,需减掉2个超额派送人员,即从D区和H区派送人员中各减去1个。如下表所示:

    1. (1) 数据如上表所示,如果 F 区退掉2份订单,重新计算并分配派送人员(整体调整),F区派送人员的人均派单量是
    2. (2) 实现上述功能的Python程序如下,请在画线处填写正确的代码。

      #从数据库中读取各订单所在区域,如a=[‘A’,‘B’,‘H’,‘F’, … …]

      qyn=8

      #区域数量

      psryn=30

      #配送人员数量

      rs=round(len(a)/psryn)

      b=[]

      for i in range(qyn):

          c=chr(i+65)         # “A”的Ascii码值是65

          b.append([c,0,0])    #生成二维列表b=[[‘A’,0,0],[‘B’,0,0]…

      …]

      for i in a:

              #统计各区域订单数量

      s=0

      for i in range(qyn):

         

          If b[i][1]%rs!=0:

              b[i][2]+=1

          s+=b[i][2]

      k=s-psryn

      i=0

      while k>0:

          for j in range(qyn-1,i,-1):

              :

                  b[j-1],b[j]=b[j],b[j-1]

          if b[i][2]>1:

              b[i][2]-=1

              k-=1

          i+=1

    3. (3) 若程序中语句“s+=b[i][2]”缩进到了“if b[i][1]%rs!=0:”模块内,题中所给的样例数据运行结果(是/否)受到影响,将样例“E”区订单数量38修改为能测出程序存在的问题。

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