資源簡介 數組綜合練習一、基礎默寫圖11如上圖1所示:用不同的記號筆在上圖標識出來index=__________________Columns=__________________Values=___________________圖22如上圖2所示:用不同的記號筆在上圖標識出來index=__________________Columns=__________________Values=___________________3如右圖3所示:df.values的結果是———————————二、地區模擬題 圖31、有如下 Python 代碼:data='My Name is Tom!'imax,t=0,0for ch in data:if ('A'<=ch<='Z') or ('a'<=ch<='z'):t+=1else:if t>imax:imax=tt=0print(imax)執行上述代碼后,輸出的內容是A.2 B.3 C.4 D.52、[202406]數組 11.有如下 Python 程序段:for i in range(0, len(a) -1, 2):if i> 0 and a[i] < a[i - 1]:a[i], a[i - 1] = a[i - 1], a[i]if a[i] < a[i + 1]:a[i], a[i + 1] = a[i + 1], a[i]列表 a 有 6 個元素,運行該程序段后,a 可能的值是 ( )A.[2, 9, 8, 6, 9, 3] B.[9, 9, 8, 6, 3, 2]C.[9, 3, 6, 2, 8, 9] D.[6, 3, 9, 2, 9, 8]3、[Z20]10.列表a包含n個互不相等的正整數,即 a[0],a[1]...,[n-1],求其中任意兩個元素之和的最大值的程序段如下:s=0b=a[0]for i in range(1,n):————————————————————print(s)劃線處應選填的代碼順序是()(1)b=max(a[i],a[i-1]) (2)b=max(b,a[i])(3)s=max(s,a[i]+b) (4)s=max(s,a[i]+a[i-1])A.32 B.31 C.42 D.41(3)[202403強基聯盟]10.某算法的部分流程圖如第 10 題圖所示,數組元素 a[0]至 a[8]依次存放 7,5,0,0,9,1,3,7,7,執行這部分流程 后,輸出 c 的值為 ()A.2 B.3 C.4 D.5【答案】A【解析】(技術高手聯盟 IT 組 提供)考查流程圖相關知識及數組的應用由 cnt[a[i]] cnt[a[i]]+1 可知該算法實現了桶排序,將相同元素放入同一個桶中,最后統計 a 數組中,重 復出現的元素的個數。4、[202403強基聯盟]該系統設有 4 個煙霧傳感器,編號存儲在列表 names 中,其中 names=["s1","s2","s3","s4"]。各傳感器 每隔 1 分鐘分別采集 1 次煙霧濃度值并傳輸到服務器。現從數據庫中提取某時段一小時的歷史數據存 儲 在 字 典 dic 中 , 其 中 dic={"s1":[480,500,…,550], "s2":[450,430,…,560], "s3":[580,500,…,450],"s4":[510,520,…,530]},dic 第一個元素表示傳感器 s1 在第 1,2,…,60 分鐘采集的煙霧濃度值分別為 480,500,…,550,以此類推。求 4 個傳感器采集的煙霧濃度數據中的最大值和次大值。 部分 Python 程序代碼如下,請在劃線處填入合適的代碼。m1 = 0; m2 = 0 #最大值 m1,次大值 m2for item in names:________① ______for i in range(0, len(tmp) , 2):if tmp[i] < tmp[i+1]:tmp[i],tmp[i+1] = tmp[i+1],tmp[i]if tmp[i+1] > m1:m1 = tmp[i]; m2 = tmp[i+1]elif ___②__ :m2 = m1; m1 = tmp[i]elif tmp[i] > m2:m2 = tmp[i]5、【202405東陽】13.某紅木加工廠為了防止粉塵爆炸,在木料車間搭建了粉塵監測系統。該系統示意圖如第 13題圖 a 所示,網絡應用軟件的實現架構是 B/S 架構。粉塵爆炸有三個條件:一是有火源,二是氧氣濃度達到 21% ,三是粉塵濃度不能超過 20~60g/m3 。請回答下列問題:在車間不同位置安裝了 10 個粉塵傳感器,用于找出最易發生粉塵爆炸的位置。現編寫程序,找出 10 個傳感器每小時(0—23 時)粉塵濃度最大值出現的次數,并輸出次數最多的傳感器編號。若同一時段出現多個相同的最大值,則輸出最先出現的編號。部分 Python 程序代碼如下,輸出界面如 13 題圖 b 所示,請在劃線處填入合適的代碼。sensor=["s1","s2","s3","s4","s5","s6","s7","s8","s9","s10"] #傳感器的編號 dis=[[16,22, … …,8],[ 10,25, … …,25], … …,[9,14, … …,14]]#dis 中存儲 10 個傳感器每小時的粉塵濃度數據,分別是 dis[0]—dis[9] 。如 dis[0]中的 [ 16,22, … … ,8],分別是傳感器 s1 在第0 、1 、2… …23 時采集到的粉塵濃度值。ds_count=[0]* 10 #存儲每個傳感器最大值出現的次數for i in range(0,24):max1=p1=0for j in range(0, 10):if dis[j][i]>max1:max1=dis[j][i]p1= ①ds_count[p1]+= 1print(" 10 個傳感器最大值出現的次數為",ds_count)max2=p2=0for i in range(0, 10):if ds_count[i]>max2:max2=ds_count[i]p2=iprint("次數最多的是", ② ,"粉塵傳感器。")6、【2312強基】有一個數字集合,所有數按從小到大的順序排成規律的數列,即a1=3,a2=5,a3=6,a4=9,…,小明同學對所有數字按照左小右大、上小下大的原則寫成如下的三角表形式,如第 13 題圖 a 所示:(1)小明發現圖 a 中的數據很有規律,根據這一規律可以推出 a(13)= ▲ ;(2)小明編寫了一個 Python 程序,用來求該數列第 n 項數值以及前 n 項和,程序運行界面如第 13 題圖 b 所示。部分程序代碼如下:num=int(input("請輸入數列的項數:"))n=numi,sum=1,0while n>i:for j in range(i):________(1)_________________② ________i+=1if n!=0:for j in range(n):sum+=2**i+2**j___________③ _______print("a("+str(num)+")=",b)print("集合前"+str(num)+"項和為:",sum)11 月 1 日開始小明每天定時記錄農作物的生長情況,為了更好的了解溫度對農作物生長的影響,系統搭建好后從 10 月 20 日開始運行至 11 月 5 日,小明現需計算其中屬于 11 月份的每天溫度與前一天的溫差,首先在數據表中加入了“diff”列來記錄溫度差,如第 13 題圖 b 所示,分析結果如 13 題 c 所示。第 13 題圖 b 第 13 題圖 c部分 Python 程序如下:import pandas as pdimport matplotlib.pyplot as pltdf = pd.read_csv("data.csv")n = len(df)df["diff"] = 0# 插入新列“diff”,用于存儲與前一天溫差,默認值設為 0dft =_________①________ # 將 10 月 31 日至 11 月 5 日數據存儲于 dftfor i in range(12,17):s = dft.at[i,"temp"] - dft.at[i - 1,"temp"]______②____ #設置 11 月份每日的溫差值如第 13 題圖 diff 列所示dft = dft.tail(5)print(dft) #輸出如第 13 題圖 c 所示8、14.某動車廂有特定座位 m 排,共 4×m=n 個座位,每一排從左到右分別編為 A、B、C、D。A 臨左窗,B、C 臨過道,D 臨右窗。動車售票系統支持在線訂票或退票。現編寫程序,模擬在線訂票退票操作,并及時統計待售的連坐座位有多少對。若某相同的座位數據被多次輸入,則依次表示售出,退票,售出……以此類推。如第 14 題圖 a 所示,當前圖中顯示的待售連坐座位是 7 對。(1)若售退數據為 '1A', '1C', '2A', '2B', '3C', '2B', '1A',則此時售出座位有( )個(2)實現上述功能的部分 Python 程序如下,請在劃線處填入合適的代碼。n = 40;cnt = 0tick = [0] * n #0 ~ n-1 號座位初始為待售狀態,每位用 0 表示。lst = ['5C', '2A', '7A', '6C', '6C', '4D', '7D', '4D', '10C']j=0while j != len(lst):puts = lst[j]st=""______①______for i in puts:if "0" <= i <= "9":______②______else:num = int(st)sq = ord(i) - 65#此時 i 為 puts 中讀取的字母,以此計算本次操作的座位所處的列號pos = (num - 1) * 4 + sqtick[pos] = 1 - tick[pos]for i in range(0,n,2):if _____③_____:cnt += 1print("待售的連坐座位統計:", cnt, "對")9.使用列表生成式創建數組代碼如下:a=[i*i for i in range(10) if i%2==0]則數組元素 a[3]的值是 ( )A.3 B.9 C.16 D.3610.在一個長度為 n 的數組中刪除第 i個元素(1<=i<=n)時,需向前移動的元素個數是 ()A.i B.n-i C.n-i+1 D.n-i-111、有如下 Python 程序段:a=[3,1,6,5,0,9,2,6]i=0;n=len(a)while iif a[i]%3==0:a[i]=a[n-1]n-=1else:i+=1執行該程序段后,a[0]的值是 ()A.3 B.1 C.2 D.512、實現上述功能的 Python 程序如下,請在劃線處填入合適的代碼。#算法 1:使用變量 j逆序掃描數組,再利用 pop(j)方法直接刪除重復元素def deduplication_1(arr):i=0while ifor j in range( ① ):if arr[j]==arr[i]:arr.pop(j)i+=1#算法 2:使用變量 c 統計重復元素,再通過 arr[j-c]=arr[j]高效刪除重復元素def deduplication_2(arr):i,n=0,len(arr)while ic=0 #記錄重復元素的數量for j in range(i+1,n):if arr[j]==arr[i]:c+=1else:_______②______n-=c #更新數組長度i+=1del arr[n:]#算法 3:使用變量 r記錄剩余元素右邊界,再通過 arr[r]=arr[j]高效刪除重復元素def deduplication_3(arr):i,n=0,len(arr)while ir=i+1 #剩余數組元素的右邊界for j in range(i+1,n):if ____③____:arr[r]=arr[j]r+=1n=r #更新數組長度i+=1del arr[n:]13.有如下 Python 程序段:n=4a=[[i*n+j+1 for i in range(n)] for j in range(n)]for j in range(1,n,2):for i in range(n//2):a[i][j],a[n-i-1][j]=a[n-i-1][j],a[i][j]執行該程序段后,a[1][1]和 a[2][2]的值分別為 ()A.6 和 10 B.7 和 10C.6 和 11 D.7 和 1114.有如下 Python 程序段:a=[[0]*4]*3b=[[0]*4 for i in range(3)]a[2][3]=8b[2][3]=8執行該程序段后,下列說法正確的是 ()A.a[0][3]的值為 0,b[0][3]的值為 0B.a[0][3]的值為 0,b[0][3]的值為 8C.a[0][3]的值為 8,b[0][3]的值為 0D.a[0][3]的值為 8,b[0][3]的值為 8數組綜合練習一、基礎默寫圖11如上圖1所示:用不同的記號筆在上圖標識出來index=___[0,1,2]Columns=___[“學號”,”性別”,”年齡”]_______________Values=____[[“s001”,”s002”,”s003”],[ “男”,”女”,”男”],[16,17,18]]_______________圖22如上圖2所示:用不同的記號筆在上圖標識出來index=__________________Columns=__________________Values=___________________3如右圖3所示:df.values的結果是———————————二、地區模擬題 圖3(0)有如下 Python 代碼:data='My Name is Tom!'imax,t=0,0for ch in data:if ('A'<=ch<='Z') or ('a'<=ch<='z'):t+=1else:if t>imax:imax=tt=0print(imax)執行上述代碼后,輸出的內容是 ( C )A.2 B.3 C.4 D.5(1)[202406]數組 11.有如下 Python 程序段:for i in range(0, len(a) -1, 2):if i> 0 and a[i] < a[i - 1]:a[i], a[i - 1] = a[i - 1], a[i]if a[i] < a[i + 1]:a[i], a[i + 1] = a[i + 1], a[i]列表 a 有 6 個元素,運行該程序段后,a 可能的值是 ( D )A.[2, 9, 8, 6, 9, 3] B.[9, 9, 8, 6, 3, 2]C.[9, 3, 6, 2, 8, 9] D.[6, 3, 9, 2, 9, 8](2)[Z20]10.列表a包含n個互不相等的正整數,即 a[0],a[1]...,[n-1],求其中任意兩個元素之和的最大值的程序段如下:s=0b=a[0]for i in range(1,n):————————————————————print(s)劃線處應選填的代碼順序是(A)(1)b=max(a[i],a[i-1]) (2)b=max(b,a[i])(3)s=max(s,a[i]+b) (4)s=max(s,a[i]+a[i-1])A.32 B.31 C.42 D.41(3)[202403強基聯盟]10.某算法的部分流程圖如第 10 題圖所示,數組元素 a[0]至 a[8]依次存放 7,5,0,0,9,1,3,7,7,執行這部分流程 后,輸出 c 的值為 ()A.2 B.3 C.4 D.5【答案】A【解析】(技術高手聯盟 IT 組 提供)考查流程圖相關知識及數組的應用由 cnt[a[i]] cnt[a[i]]+1 可知該算法實現了桶排序,將相同元素放入同一個桶中,最后統計 a 數組中,重 復出現的元素的個數。(4)[202403強基聯盟]該系統設有 4 個煙霧傳感器,編號存儲在列表 names 中,其中 names=["s1","s2","s3","s4"]。各傳感器 每隔 1 分鐘分別采集 1 次煙霧濃度值并傳輸到服務器。現從數據庫中提取某時段一小時的歷史數據存 儲 在 字 典 dic 中 , 其 中 dic={"s1":[480,500,…,550], "s2":[450,430,…,560], "s3":[580,500,…,450],"s4":[510,520,…,530]},dic 第一個元素表示傳感器 s1 在第 1,2,…,60 分鐘采集的煙霧濃度值分別為 480,500,…,550,以此類推。求 4 個傳感器采集的煙霧濃度數據中的最大值和次大值。 部分 Python 程序代碼如下,請在劃線處填入合適的代碼。m1 = 0; m2 = 0 #最大值 m1,次大值 m2for item in names:________① ______for i in range(0, len(tmp) , 2):if tmp[i] < tmp[i+1]:tmp[i],tmp[i+1] = tmp[i+1],tmp[i]if tmp[i+1] > m1:m1 = tmp[i]; m2 = tmp[i+1]elif ___②__ :m2 = m1; m1 = tmp[i]elif tmp[i] > m2:m2 = tmp[i](3)①tmp=dic[item] ②tmp[i]>m1循環遍歷列表 names,item 為字典的鍵,有后續代碼可得 tmp 為溫度值,需通過字典鍵值對實現即 tmp=dic[item];內循環實現最大值和次大值賦值,考查分支語句的應用。首先通過比較確保相鄰兩數中前者為大數,后者為小數。第一種情況:若小數比最大值(m1)更大,則大數為最大值,小數為次大值;第二種情況,大數比原最大值大,則將原最大值更新為次大值,最大值為當前的大數;第三種情況,小數比原次大值更大,更新次大值(5)【202405東陽】13.某紅木加工廠為了防止粉塵爆炸,在木料車間搭建了粉塵監測系統。該系統示意圖如第 13題圖 a 所示,網絡應用軟件的實現架構是 B/S 架構。粉塵爆炸有三個條件:一是有火源,二是氧氣濃度達到 21% ,三是粉塵濃度不能超過 20~60g/m3 。請回答下列問題:(3)在車間不同位置安裝了 10 個粉塵傳感器,用于找出最易發生粉塵爆炸的位置。現編寫程序,找出 10 個傳感器每小時(0—23 時)粉塵濃度最大值出現的次數,并輸出次數最多的傳感器編號。若同一時段出現多個相同的最大值,則輸出最先出現的編號。部分 Python 程序代碼如下,輸出界面如 13 題圖 b 所示,請在劃線處填入合適的代碼。sensor=["s1","s2","s3","s4","s5","s6","s7","s8","s9","s10"] #傳感器的編號 dis=[[16,22, … …,8],[ 10,25, … …,25], … …,[9,14, … …,14]]#dis 中存儲 10 個傳感器每小時的粉塵濃度數據,分別是 dis[0]—dis[9] 。如 dis[0]中的 [ 16,22, … … ,8],分別是傳感器 s1 在第0 、1 、2… …23 時采集到的粉塵濃度值。ds_count=[0]* 10 #存儲每個傳感器最大值出現的次數for i in range(0,24):max1=p1=0for j in range(0, 10):if dis[j][i]>max1:max1=dis[j][i]p1= ①ds_count[p1]+= 1print(" 10 個傳感器最大值出現的次數為",ds_count)max2=p2=0for i in range(0, 10):if ds_count[i]>max2:max2=ds_count[i]p2=iprint("次數最多的是", ② ,"粉塵傳感器。")(3)① 根據 ds_count[p1]+=1,說明變量 p1 保存的是這個時間段最大傳感器對應的下標:j;② 這里填寫的應該是變量 p2 對應的傳感器名稱:sensor[p2],根據本題的特點,這樣寫也是可以的:"s"+str(p2+1)13.有一個數字集合,所有數按從小到大的順序排成規律的數列,即 a1=3,a2=5,a3=6,a4=9,…,小明同學對所有數字按照左小右大、上小下大的原則寫成如下的三角表形式,如第 13 題圖 a 所示:(1)小明發現圖 a 中的數據很有規律,根據這一規律可以推出 a(13)= ▲ ;(2)小明編寫了一個 Python 程序,用來求該數列第 n 項數值以及前 n 項和,程序運行界面如第 13 題圖 b 所示。部分程序代碼如下:num=int(input("請輸入數列的項數:"))n=numi,sum=1,0while n>i:for j in range(i):_______① _________________② ________i+=1if n!=0:for j in range(n):sum+=2**i+2**j___________③ _______print("a("+str(num)+")=",b)print("集合前"+str(num)+"項和為:",sum)答案:(1) 36(2)① sum+=2**i+2**j② n-=i③ b=2**i+2**(n-1)①df.tail(6) 或者 df[11:17]②dft.at[i,"diff"] = s 或 df.at[i,"diff"]=s 或 dft["diff"][i]=s 或 df["diff"][i]=s8、(1)3.(2)①j += 1 或 j = j + 1 或其他等價答案.②st = st+i 或 st += i 或其他等價答案.③tick[i] + tick[i+1] == 0 或 tick[i]==0 and tick[i+1]==0 或其他等價答案9、D10、B11、C12、(1)len(arr)-1,i,-1(2)arr[j-c]=arr[j](3)arr[j]!=arr[i]DC 展開更多...... 收起↑ 資源列表 浙教版信息技術選修1第二章2.1數組綜合練習題.docx 浙教版信息技術選修1第二章2.1數組綜合練習題答案.docx 縮略圖、資源來源于二一教育資源庫