充值活动已开启,快来参与吧 关闭充值活动
当前位置: 高中信息技术 /
  • 1. 某工厂每天会收到多个订单,有 n 台机器对零件进行加工。为减少机器的损耗,需要在满足所有订单加工的情况下(订单即到即加工),机器开启数量尽量少。若开启 n 台机器不能满足订单即到即加工,则计算所有订单最少的平均等待时间。若给定某天内所有的订单信息,请计算需要开启的机器数量以及订单平均等待时间,代码运行效果图如图所示(注意:若上一个订单结束时间为 9:00,下一个订单开启时间最早为 9:00)。

    请回答下列问题:

    1. (1) 上图所示的例子中,若机器有 10 台,则只需要开启台机器。
    2. (2) 定义如下 data_sort(a)函数,参数 a 为列表,列表中每个元素包含三个数据项,依次分别对应订单批次、到达时间、加工时间(时间均转为分钟)。该函数实现将列表a 按照订单到达时间升序排序。

      def data_sort(a):

          for i in range(len(a)):

              for j in :

                  if   ①    :

                      a[j], a[j+1] = a[j+1], a[j]

      ①划线处填入的语句为,可实现上述功能。

      ②若将加框处语句写错为 range(i,len(a)-1),则下列 4 组数据中,若列表a 的值为(单选,填字母)不能测试出问题。

      A. [['A1',100,30],['A2',120,30],['A3',110,30],['A4',140,30],['A5',130,30]]

      B. [['A1',120,30],['A2',110,30],['A3',100,30],['A4',130,30],['A5',140,30]]

      C. [['A1',110,30],['A2',140,30],['A3',130,30],['A4',100,30],['A5',120,30]]

      D. [['A1',110,30],['A2',120,30],['A3',130,30],['A4',140,30],['A5',100,30]]

    3. (3) 实现计算开启机器数量的部分 Python 程序如下,请在划线处填入合适的代码。

      def huan(n):

          #将分钟转换为时间AA:BB 格式,返回值为字符串,代码略#读取文件中的信息,并存储在列表 order 中,代码略data_sort(order)

      n=int(input("机器数量:")) for i in range(len(order)):

          order[i].append(-1)#order[i]追加一个元素-1 mach = [-1] * n

      num, wait = 0, 0

      for i in range(len(order)):

          k = -1

          time = -1

          for j in:

              t1 = mach[j]

              if k == -1:

                  k = j

                  time = order[t1][1]+order[t1][2]

              else:

                  t2 = mach[k]

                  if order[t1][1]+order[t1][2]<order[t2][1]+order[t2][2]:

                      k = j

                      time = order[t1][1]+order[t1][2]

          if k == -1 or num < n and:

              mach[num] = i

              num += 1

          else:

              order[i][3] = mach[k]

              mach[k] = i

              if time > order[i][1]:

                  wait += time-order[i][1]

                  order[i][1] = time if num < n:

          print("只需开启"+str(num)+"台机器") else:

          print(str(n)+"台机器全部开启,订单平均等待"+str(round(wait/len(order),2))+"min") for i in range(num):

          print('第'+str(i+1)+'台机器:')

          p = mach[i]

          ans = ''

          while p!=-1:

              ans = order[p][0]+':'+huan(order[p][1])+'~'+huan(order[p][1]+order[p][2])+',' + ans

              p = 

          print(ans[:-1])