26. 某快递驿站有A、B两类货架,收到的包裹重量小于等于10存放于A货架,其余存放于B货架。编写程序模拟生成取件码和顾客的取件过程,取件码是根据当前已处理的包裹数量生成,如A-0001表示当天第一个处理的包裹存放在A货架,B-0003表示当天第三个处理的包裹存放在B货架。取件码与顾客手机号关联,程序根据输入的手机号显示其所有包裹的取件码,并允许顾客一次性提取或者部分提取。程序的部分运行界面如图a和图b所示。
图a
图b
(1)当前已处理的包裹取件码是A-0158,若下一个包裹重量是12,其取件码为
____。
(2)定义函数save(pnum,code),参数pnum为手机号,code为取件码。函数功能是将一条包裹信息存储到列表goods和列表dic中。如图a的包裹数据,手机号“1801215”在两个列表中的数据分别为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)实现取件功能的部分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("查无此号,请检查后重新输入!")