当前位置: 高中信息技术 / 综合题
  • 1. (2023高三上·衢州、丽水、湖州期中) 某快递驿站有A、B两类货架,收到的包裹重量小于等于10存放于A货架,其余存放于B货架。编写程序模拟生成取件码和顾客的取件过程,取件码是根据当前已处理的包裹数量生成,如A-0001表示当天第一个处理的包裹存放在A货架,B-0003表示当天第三个处理的包裹存放在B货架。取件码与顾客手机号关联,程序根据输入的手机号显示其所有包裹的取件码,并允许顾客一次性提取或者部分提取。程序的部分运行界面如图a和图b所示。

    1. (1) 当前已处理的包裹取件码是 A-0158,若下一个包裹重量是 12,其取件码为
    2. (2) 定义函数save(pnum,code),参数pnum为手机号,code为取件码。函数功能是将一条包裹信息存储到列表goods和列表dic中。如图a的包裹数据,手机号“180****1215”在两个列表中的数据分别为goods[4]=["B-0005",-1]、goods[9]=["A-0010",4]和 dic[2]=["180****1215",9,2]。

      ①若调用该函数继续存储手机号“180****1215 ”的包裹, 其取件码是“B-0011 ”,则对应 dic[2]的值变为["180****1215",,]。

      ②函数 save 代码如下,程序中加框处代码有错,请改正。

      def save(pnum,code):

          goods.append([code,-1])

          n=len(goods)-1

          print(n,"号包裹的手机号:",pnum,"取件码:",code)

          num=search(dic,pnum)    #函数返回手机号 pnum 在 dic 中的索引号,未找到返回-1

          if num==-1:

              dic.append([pnum,n,1])             #新增一个包裹信息

          else:

              goods[n][1]=dic[num][1]

              dic[num][1]=n

              

    3. (3) 实现取件功能的部分 Python 程序如下,请在划线处填入合适的代码。

      x=input("请输入您的手机号:")

      num=search(dic,x)

      if num!=-1:

          #输出手机号为 x 的当前所有包裹信息,代码略

          op=int(input("输入 0 取全部包裹,输入 1 取部分包裹:"))

          if op==0:

              print("您的包裹已经取完! ")

              del dic[num]  #删除 dic 中索引为 num 的元素

          else:

              order=input("请输入本次的取件码,只输入#表示结束取件:")

              while order!="#":

                 

                  p,q=head,head

                  while goods[q][0]!=order:

                  p=q

                 

              if p==head:

                  dic[num][1]=goods[q][1]

              else:

                  goods[p][1]=goods[q][1]

              dic[num][2]-=1

              if dic[num][2]==0:

                  print("您的包裹已经取完!")

                  break

              #输出手机号为 x 的当前所有包裹信息,代码略

              order=input("请输入本次的取件码, 只输入#表示结束取件:")

      else:

          print("查无此号,请检查后重新输入!")

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