1图 2图
(1)“data. csv”中的原始数据需要进行换算和排序后才能进一步处理,读取与排序的程序如下。
a=[]
def read_data (): #读取数据并排序
df=pd.read_csv ("data.csv")
for row in df.values: #逐行读取数据到列表row
s=row[1] #将时间数据赋值到s
b,c=map (int,s.split (’:’)) #以“:”分割小时到b,分钟到c
s=b*60+c #将b小时、c分钟换算成s分钟
a. append ([row[0],s,row [2]]) #a追加一个元素[row[0],s,row[2]]
n=len (a)
for i in range(n-1):
for j in range (n-1,i,-1):
if a[j][1]<a[j-1][1]:
a[j],a[j-1]=a[j-1],a[j]
①若“data.csv”文件中有10条记录,则上述程序中语句“if a[j][1]<a[j-1][1]”的运行次数为
②若将上述程序中的语句“s=b*60+c”删除,仅以第15-1图可见的6条数据运行上述程序后,列表a中元素依次为
A.B.C.D.
(2)实现模拟叫号程序并统计所有客人等待时间部分代码如下,请在划线处填入合适的代码:
read_data () #调用read_data ()函数完成数据读取及排序
n=len (a)
b=[0,30,10,10] #初始3种类型的座位数分别是30,10,10
h=[];q=[]
for i in range(4):
h.append ([-1,-1]) #h末尾追加一个元素[-1,-1]
c=0
①
for i in range(n):
m=a[i][0]
if a[i][2]=="OUT":
b[m]+=1
if h[m][0]!=-1:
total+= ②
h[m][0]=q[h[m][0]][2]
b[m]-=1
print ("类别为",m,"的客人在",a[i][1],"分点餐")
else:
if b[m]>0:
b[m]-=1
print ("类别为",m,"的客人在",a[i][1],"分点餐")
else:
q.append ([m,a[i][1],-1])
if h[m][0]==-1:
h[m][0]=c
if h[m][1]!=-1:
③
h[m][1]=c
c+=1
print ("所有客人等待时间:",total,"分钟")
同类型试题
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