試卷征集
          加入會員
          操作視頻

          根據網上選課系統的報名導出數據(存放在“社團選課.xlsx“文件中)(如圖 a 所示),小北又設計了程序對該名單做了進一步處理,生成了以班級名稱為名(如圖a 所示) 和以社團名稱為名(如圖 b 所示) 的電子表格文件,以便分發給對應的社團指導老師和各班班主任。
          生成圖 b 所示名單的 python 程序如下,該程序的功能:先對導出數據按社團名稱進行分類,再對選報同一社團的學生按班級為關鍵字進行升序排序,最后生成相應的社團名單。請 在橫線處填入合適的代碼。

          import pandas as pd
          def read_file(filename):
          #讀入電子表格文件,并將表中的數據轉換成列表,代碼略
          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]
          #統計各社團人數,存放在列表 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:])

          【答案】num=rs[i][1]imax=imin     save_file(a[s:s+num])
          【解答】
          【點評】
          聲明:本試題解析著作權屬菁優網所有,未經書面同意,不得復制發布。
          發布:2024/4/20 14:35:0組卷:3引用:2難度:0.3
          相似題
          • 1.編寫VB程序,功能是根據A城和B城同一時間段內的溫度數據,計算兩城溫差(A城溫度-B城溫度)A城數據和B城數據分別為包含若干個記錄的序列,其中,A城每個記錄包含溫度及其截止時間,B城每個記錄包含溫度及其持續時長。兩城溫差計算結果表示為若干個記錄的序列,每個記錄包含溫差及其持續時長。持續時長是指同一溫度(或溫差)保持不變的最大時長。示例見下表。
            時間 第1小時 第2小時 第3小時 第4小時 第5小時 第6小時 第7小時
            A城溫度 30 30 33 33 31 31 32
            A城數據 溫度 30 33 31 32
            截止時間 2 4 6 7
            B城溫度 20 20 20 22 21 21 22
            B城數據 溫度 20 22 21 22
            持續時長 3 1 2 1
            計算結果 溫差 10 13 11 10
            持續時長 2 1 1 3
            (時間單位:小時,溫度單位:攝氏度)
            表中,A城數據有4個記錄,其中第1個記錄為(溫度30,截止時間2),第2個記錄為(溫度33,截止時間4),這表明從開始到第2小時的溫度都是30,此后到第4小時的溫度都是33.B城數據有4個記錄,其中第3個記錄為(溫度21,持續時長2),這表明第5、第6這2個小時的溫度都是21.兩城溫差計算結果的第4個記錄為(溫差10,持續時長3),這表明第5、第6、第7這3個小時的溫差都是10。
            (1)若將示例中A城數據修改為3個記錄,依次是(溫度30,截止時間4)、(溫度31,截止時間6)、(溫度32,截止時間7),B城數據不變,則兩城溫差計算結果中第1個記錄為(溫差10,持續時長
             
            )(填數值)。
            (2)實現上述功能的VB程序如下,請在橫線處填入合適的代碼。
            Const m=1000'溫度數據和溫差數據包含的記錄數都少于1000
            Dim na As Integer,nb as integer'A、B城數據分別有na和nb個記錄
            Dim ha(m)As Integer'ha(i)存儲A城第i個記錄中的溫度
            Dim ta(m)As Integer'ta(i)存儲A城第i個記錄中的截止時間
            Dim hb(m)As Integer'hb(i)存儲B城第i個記錄中的溫度
            Dim tb(m)As Integer'tb(i)存儲B城第i個記錄中的持續時長
            Dim h(m)As Integer'h(i)存儲計算結果第i個記錄中的溫差
            Dim t(m)As Integer't(i)存儲計算結果第i個記錄中的持續時長
            Private Sub Command l _Click (  )
            Dim i As Integer,j As Integer
            Dim p0 As Integer,p1 As Integer,diff As Integer
            Dim n As Integer'兩城溫差數據的記錄個數
            '讀取兩城數據,存入變量na,nb及數組ha,ta,hb,tb中,代碼略
            For i=2 To nb
            tb(i)='將B城第i個記錄中的持續時長轉換為截止時間
            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
            '輸出兩城溫差數據,代碼略
            End Sub

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

            head=0
            n=length=len(data)#每次抽取時剩余人數
            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:#從頭節點開始查找第 t 個節點所在位置
            p=q
            q=data[p][1]
            t=t-1
            namelist1.jye.ai(data[q][0])

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

            發布:2024/6/27 10:35:59組卷:1引用:1難度:0.3
          • 3.小葉使用VB編寫程序,功能如下:在文本框Text1中輸入一個二進制或十六進制數,單擊“轉換”按鈕Command1,在文本框Text2中顯示該數對應的十進制數。程序運行界面如圖所示。

            (1)實現上述功能的VB程序如下,請在橫線處填上合適的代碼。

            (2)運行程序,在文本框Text1中輸入A2H,則在文本框Text2中顯示
             

            發布:2024/6/27 10:35:59組卷:0引用:1難度:0.4
          APP開發者:深圳市菁優智慧教育股份有限公司| 應用名稱:菁優網 | 應用版本:5.0.7 |隱私協議|第三方SDK|用戶服務條款
          本網部分資源來源于會員上傳,除本網組織的資源外,版權歸原作者所有,如有侵犯版權,請立刻和本網聯系并提供證據,本網將在三個工作日內改正