(1)若货物数据及车辆信息如下表所示
货物类型 | A | B | C | D | E | 车辆编号 | C1 | C2 | C3 | |
货物数量(件) | 15 | 50 | 28 | 20 | 25 | 最大载货量(件) | 25 | 35 | 40 |
(2)货物由2个数据项组成:第1个数据项为货物类型,第2个数据项为货物数量,读入到列表a中的数据格式形如:[[“A”,40][“B”,50],[“A”,30],[“C”,20],①…].首先对货物数据进行预处理,将类型相同的货物进行合并,如a=[[“A”,40],[“B”,50],[“A”,30],[“C”,20]],则合并后的数据为[[“A”,70],[“B”,50],[“C”,20]]。编写自定义函数merge(1st),参数1st为货物列表,
Python程序代码如下:
def merge(1st):
i=0;n=len(lst)-l
while i<n:
j=i+1
while j<=n:
if lst[i][0]==lst[j][0]:
lst[i][l]+=lst[j][1]
①
j-=1;n-=1
j+=1
i+=l
return 1st[:n+1]
①请将划线处代码补充完整。
②若1st的值为[[“A”,40],[“B”,50],[“A”,30],[“C”,20]],则程序中1st[i][0]与1st[j][0]比较了
(3)实现模拟货物装车的Python程序代码如下,请在划线处填入合适的代码。
’’’读取货物数据和运输车辆数据,分别存入列表a和列表b中。列表b的每个元素包含2个数据项,分别为车辆编号和最大载货量。列表b数据格式形如:b=[[“Cl”,25],[“C2”,35],[“C3”,40]],代码略’’’
data=merge(a)
#对列表变量data按数量降序排序,对列表b按最大载货量降序排序,代码略
m=len(b)
for i in range(len(data)):
data[i].append(i+1)#为data[i]增加一个元素
data[i][2]=-1
head=0
for i in range(m):
num=0;s=“”
q=head
while q!= -l and num<b[i][1]:
num+=data[q][1]
data[q][1]=0
s+=data[q][0]+”,”
p=q;q=data[q][2]
print(”编号为”,b[i][0],”的车辆装载的货物为:”,s)
if num>b[i][1]:
①
head=p
else:
head=q
q=head
if q!=-l:
while data[q][2]!= -l and ②
q=data[q][2]
if q!=head:
tmp=data[head][2]
data[head][2]=data[q][2]
data[q][2]=head
③
else:
break
if head!=-l:
print(”剩余货物及数量:”)
p=head
while p!=-1:
print(data[p][0],”货物:”,data[p][1])
p=data[p][2]
else:
print(”货物已全部装完!”)
同类型试题
y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2
y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2