試卷征集
加入會(huì)員
操作視頻

根據(jù)網(wǎng)上選課系統(tǒng)的報(bào)名導(dǎo)出數(shù)據(jù)(存放在“社團(tuán)選課.xlsx“文件中)(如圖 a 所示),小北又設(shè)計(jì)了程序?qū)υ撁麊巫隽诉M(jìn)一步處理,生成了以班級(jí)名稱為名(如圖a 所示) 和以社團(tuán)名稱為名(如圖 b 所示) 的電子表格文件,以便分發(fā)給對(duì)應(yīng)的社團(tuán)指導(dǎo)老師和各班班主任。
生成圖 b 所示名單的 python 程序如下,該程序的功能:先對(duì)導(dǎo)出數(shù)據(jù)按社團(tuán)名稱進(jìn)行分類,再對(duì)選報(bào)同一社團(tuán)的學(xué)生按班級(jí)為關(guān)鍵字進(jìn)行升序排序,最后生成相應(yīng)的社團(tuán)名單。請(qǐng) 在橫線處填入合適的代碼。
菁優(yōu)網(wǎng)
import pandas as pd
def read_file(filename):
#讀入電子表格文件,并將表中的數(shù)據(jù)轉(zhuǎn)換成列表,代碼略
defsave_file(a):#保存名單至電子表格文件
df=pd.DataFrame(a,columns=[“班級(jí)“,“姓名“,“選報(bào)社團(tuán)“])
df.to_excel (a[0][2]+“.xlsx“,index=False)
a=read_file(“社團(tuán)選課.xlsx“)
n=len(a)
foriinrange(1,n):#按社團(tuán)名稱(參照字符的編碼大小) 進(jì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)計(jì)各社團(tuán)人數(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:])

【答案】見試題解答內(nèi)容
【解答】
【點(diǎn)評(píng)】
聲明:本試題解析著作權(quán)屬菁優(yōu)網(wǎng)所有,未經(jīng)書面同意,不得復(fù)制發(fā)布。
發(fā)布:2024/4/20 14:35:0組卷:3引用:2難度:0.3
相似題
  • 1.編寫VB程序,功能是根據(jù)A城和B城同一時(shí)間段內(nèi)的溫度數(shù)據(jù),計(jì)算兩城溫差(A城溫度-B城溫度)A城數(shù)據(jù)和B城數(shù)據(jù)分別為包含若干個(gè)記錄的序列,其中,A城每個(gè)記錄包含溫度及其截止時(shí)間,B城每個(gè)記錄包含溫度及其持續(xù)時(shí)長(zhǎng)。兩城溫差計(jì)算結(jié)果表示為若干個(gè)記錄的序列,每個(gè)記錄包含溫差及其持續(xù)時(shí)長(zhǎng)。持續(xù)時(shí)長(zhǎng)是指同一溫度(或溫差)保持不變的最大時(shí)長(zhǎng)。示例見下表。
    時(shí)間 第1小時(shí) 第2小時(shí) 第3小時(shí) 第4小時(shí) 第5小時(shí) 第6小時(shí) 第7小時(shí)
    A城溫度 30 30 33 33 31 31 32
    A城數(shù)據(jù) 溫度 30 33 31 32
    截止時(shí)間 2 4 6 7
    B城溫度 20 20 20 22 21 21 22
    B城數(shù)據(jù) 溫度 20 22 21 22
    持續(xù)時(shí)長(zhǎng) 3 1 2 1
    計(jì)算結(jié)果 溫差 10 13 11 10
    持續(xù)時(shí)長(zhǎng) 2 1 1 3
    (時(shí)間單位:小時(shí),溫度單位:攝氏度)
    表中,A城數(shù)據(jù)有4個(gè)記錄,其中第1個(gè)記錄為(溫度30,截止時(shí)間2),第2個(gè)記錄為(溫度33,截止時(shí)間4),這表明從開始到第2小時(shí)的溫度都是30,此后到第4小時(shí)的溫度都是33.B城數(shù)據(jù)有4個(gè)記錄,其中第3個(gè)記錄為(溫度21,持續(xù)時(shí)長(zhǎng)2),這表明第5、第6這2個(gè)小時(shí)的溫度都是21.兩城溫差計(jì)算結(jié)果的第4個(gè)記錄為(溫差10,持續(xù)時(shí)長(zhǎng)3),這表明第5、第6、第7這3個(gè)小時(shí)的溫差都是10。
    (1)若將示例中A城數(shù)據(jù)修改為3個(gè)記錄,依次是(溫度30,截止時(shí)間4)、(溫度31,截止時(shí)間6)、(溫度32,截止時(shí)間7),B城數(shù)據(jù)不變,則兩城溫差計(jì)算結(jié)果中第1個(gè)記錄為(溫差10,持續(xù)時(shí)長(zhǎng)
     
    )(填數(shù)值)。
    (2)實(shí)現(xiàn)上述功能的VB程序如下,請(qǐng)?jiān)跈M線處填入合適的代碼。
    Const m=1000'溫度數(shù)據(jù)和溫差數(shù)據(jù)包含的記錄數(shù)都少于1000
    Dim na As Integer,nb as integer'A、B城數(shù)據(jù)分別有na和nb個(gè)記錄
    Dim ha(m)As Integer'ha(i)存儲(chǔ)A城第i個(gè)記錄中的溫度
    Dim ta(m)As Integer'ta(i)存儲(chǔ)A城第i個(gè)記錄中的截止時(shí)間
    Dim hb(m)As Integer'hb(i)存儲(chǔ)B城第i個(gè)記錄中的溫度
    Dim tb(m)As Integer'tb(i)存儲(chǔ)B城第i個(gè)記錄中的持續(xù)時(shí)長(zhǎng)
    Dim h(m)As Integer'h(i)存儲(chǔ)計(jì)算結(jié)果第i個(gè)記錄中的溫差
    Dim t(m)As Integer't(i)存儲(chǔ)計(jì)算結(jié)果第i個(gè)記錄中的持續(xù)時(shí)長(zhǎng)
    Private Sub Command l _Click ( ?。?br />Dim i As Integer,j As Integer
    Dim p0 As Integer,p1 As Integer,diff As Integer
    Dim n As Integer'兩城溫差數(shù)據(jù)的記錄個(gè)數(shù)
    '讀取兩城數(shù)據(jù),存入變量na,nb及數(shù)組ha,ta,hb,tb中,代碼略
    For i=2 To nb
    tb(i)='將B城第i個(gè)記錄中的持續(xù)時(shí)長(zhǎng)轉(zhuǎn)換為截止時(shí)間
    Next i
    i=1:j=1
    n=0
    p0=0
    Do While i<na And i<=nb
    diff ha(i)-hb(j)
    pl=ta(i)
    If Then i=i+1
    If p1>=tb (j) Then
    pl=tb(i)
    j=j+1
    End if
    If n=0 Or diff<>h(n) Then
    n=n+l
    h(n)=diff
    t(n)=pl-p0
    Else

    End If
    p0=pl
    Loop
    '輸出兩城溫差數(shù)據(jù),代碼略
    End Sub

    發(fā)布:2024/6/27 10:35:59組卷:10引用:1難度:0.1
  • 2.根據(jù)前面幾題的分析發(fā)現(xiàn),部分社團(tuán)的選報(bào)人數(shù)超過了 40 人,由于人數(shù)太多不便于開展活動(dòng),學(xué)校團(tuán)委決定將人數(shù)超過 40 人的社團(tuán)隨機(jī)分成兩個(gè)班。小北使用鏈?zhǔn)浇Y(jié)構(gòu)實(shí)現(xiàn)了該分班功能?,F(xiàn)以對(duì)“MULA 商社”進(jìn)行分班為例(“MULA 商社.xlsx”文件截圖如第 15 題圖c 所示),具體實(shí)現(xiàn)程序如下,請(qǐng)?jiān)跈M線處填入合適的代碼。
    import pandas as pd
    importrandom
    df=pd.read_excel(“MULA 商社.xlsx“)
    namelist=df.values.jye.ai( ?。?將數(shù)據(jù)轉(zhuǎn)換成列表
    #將數(shù)據(jù)轉(zhuǎn)換成列表后,namelist=[[101,“鄧**“,“MULA 商社“],?]
    k=0
    data=[[““fori in range(2)]for j in range(len(namelist))]
    foriteminnamelist:#初始化鏈表結(jié)構(gòu)
    data[k][0]=item
    data[k][1]=k+1
    k+=1

    head=0
    n=length=len(data)#每次抽取時(shí)剩余人數(shù)
    namelist1=[]
    namelist2=[]
    foriinrange(n//2+1):#生成 MULA 商社 1 班名單
    t=random.randint(0,length-1)
    p=head
    q=data[p][1]
    ift==0:
    namelist1.jye.ai(data[head][0])

    else:
    while t!=1:#從頭節(jié)點(diǎn)開始查找第 t 個(gè)節(jié)點(diǎn)所在位置
    p=q
    q=data[p][1]
    t=t-1
    namelist1.jye.ai(data[q][0])

    length=length-1
    #生成MULA 商社 2 班名單及將生成的兩份名單保存成電子表格文件,代碼略

    發(fā)布:2024/6/27 10:35:59組卷:1引用:1難度:0.3
  • 3.小葉使用VB編寫程序,功能如下:在文本框Text1中輸入一個(gè)二進(jìn)制或十六進(jìn)制數(shù),單擊“轉(zhuǎn)換”按鈕Command1,在文本框Text2中顯示該數(shù)對(duì)應(yīng)的十進(jìn)制數(shù)。程序運(yùn)行界面如圖所示。
    菁優(yōu)網(wǎng)
    (1)實(shí)現(xiàn)上述功能的VB程序如下,請(qǐng)?jiān)跈M線處填上合適的代碼。
    菁優(yōu)網(wǎng)
    (2)運(yùn)行程序,在文本框Text1中輸入A2H,則在文本框Text2中顯示
     
    。

    發(fā)布:2024/6/27 10:35:59組卷:0引用:1難度:0.4
小程序二維碼
把好題分享給你的好友吧~~
APP開發(fā)者:深圳市菁優(yōu)智慧教育股份有限公司| 應(yīng)用名稱:菁優(yōu)網(wǎng) | 應(yīng)用版本:5.0.7 |隱私協(xié)議|第三方SDK|用戶服務(wù)條款
本網(wǎng)部分資源來源于會(huì)員上傳,除本網(wǎng)組織的資源外,版權(quán)歸原作者所有,如有侵犯版權(quán),請(qǐng)立刻和本網(wǎng)聯(lián)系并提供證據(jù),本網(wǎng)將在三個(gè)工作日內(nèi)改正