15.根據(jù)網(wǎng)上選課系統(tǒng)的報名導出數(shù)據(jù)(存放在“社團選課.xlsx“文件中)(如圖 a 所示),小北又設(shè)計了程序?qū)υ撁麊巫隽诉M一步處理,生成了以班級名稱為名(如圖a 所示) 和以社團名稱為名(如圖 b 所示) 的電子表格文件,以便分發(fā)給對應的社團指導老師和各班班主任。
生成圖 b 所示名單的 python 程序如下,該程序的功能:先對導出數(shù)據(jù)按社團名稱進行分類,再對選報同一社團的學生按班級為關(guān)鍵字進行升序排序,最后生成相應的社團名單。請 在橫線處填入合適的代碼。
import pandas as pd
def read_file(filename):
#讀入電子表格文件,并將表中的數(shù)據(jù)轉(zhuǎn)換成列表,代碼略
defsave_file(a):#保存名單至電子表格文件
df=pd.DataFrame(a,columns=[“班級“,“姓名“,“選報社團“])
df.to_excel (a[0][2]+“.xlsx“,index=False)
a=read_file(“社團選課.xlsx“)
n=len(a)
foriinrange(1,n):#按社團名稱(參照字符的編碼大小) 進行升序排序
forjinrange(0,n-i):
if a[j][2]>a[j+1][2]:
a[j],a[j+1]=a[j+1],a[j]
#統(tǒng)計各社團人數(shù),存放在列表 rs 中,rs=[[“SDV“,32],?],代碼略
s=0
foriinrange(len(rs)):
①left,right=s,s+num-1
while left<right:
imin=imax=left
forkinrange(left+1,right+1):
if a[k][0]<a[imin][0]:
imin=k
elifa[k][0]>a[imax][0]:
imax=k
ifimin!=left:
a[imin],a[left]=a[left],a[imin]
ifimax==left:
②ifimax!=right:
a[imax],a[right]=a[right],a[imax]
left=left+1
right=right-1
③s=s+num
save_file(a[s:])