当前位置: 高中信息技术 / 综合题
  • 1. (2022·温州模拟) 一款智力玩具,有x种颜色的n个不同直径的同心圆盘(x<n)。将圆盘串在倒T字型支架上,垂直俯视,直径不大于上方的圆盘将被遮挡,现从上方依次取走一片圆盘,记下能看到的颜色。最后说出取走几片圆盘后看到颜色种数最多,并说出颜色。某人取了6片5种颜色的圆盘随机叠放,如图a所示。他编写了如下程序来验证自己的结果是否正确,程序运行结果如图b所示。

    请回答下列问题:

    1. (1) 函数pop的功能是
    2. (2) 实现上述功能的部分程序如下页所示、请在划线处填入合适的代码。

      随机选取n个圆盘,其半径与颜色分别存储在列表r和color中并输出,如图b所示,

      r = [9,3,6,4,8,5], color = ['红','紫','蓝','绿','橙','红']。

      n = 1en(r)

      f= { }    # f中键为颜色,值为该颜色的可见数量,如: {" 蓝":2}

      def pop(top, cnum, rad):

          while top!= -1 and rad >= r[z[top]]:

              f[color[z[top]]] -= 1

              if   ①  

                  cnum -= 1

              top -= 1

          return top, cnum

      z=[-1]*n

      top = -1

      cnum=cmax=0

      for i in range(n):

          top, cnum = pop(top, cnum, p[i])

          top += 1

            ②  

          if color[z[top]] not in f:

              if[color[z[top]]= 1

              cnum+= 1

          else :

              f[color[z[top]] += 1

          if cnum >= cmax:

              cmax = cnum

              res = dict(f)    #将此时的f另存到res中

              m=  ③  

      s=""

      for i in res:

          if res[i] > 0:

              s +=i

      print("拿走", m, "片后,可看到圆盘的颜色种数最多,分别为: ", s)

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