資源簡介
絕密★考試結束前
寧波市2023學年第一學期期末九校聯考
高二技術試題
考生須知:
1.本試卷分兩部分,第一部分信息技術,第二部分通用技術。全卷共12頁,滿分100分,考試時間90分鐘。
2.考生答題前,務必將自己的姓名、準考證號用黑色字跡的簽字筆或鋼筆填寫在答題紙上。
3.選擇題的答案用2B鉛筆將答題紙上對應題目的答案選項涂黑。
4.非選擇題的答案用黑色字跡的簽字筆或鋼筆寫在答題紙上相應區域內,作圖時可先使用2B鉛筆,確定后用黑色字跡的簽字筆或鋼筆描黑,答案寫在非答題紙上無效。
第一部分:信息技術(共50分)
一、選擇題(本大題共12小題,每小題2分,共24分。每小題列出的四個備選項中只有一個是符合題目要求的,不選、錯選、多選均不得分)
1. 下列關于數據、信息和知識的說法,不正確的是( )
A. 文字是數據的一種表現形式
B. 信息超出有效期后不再具有任何價值
C. 三角形(已知三條邊的長度)的面積可以根據海倫公式計算得到,這是知識的體現
D. 面對同樣的信息,不同的人可能形成不同的知識
2. 下列關于數制和編碼的說法,正確的是( )
A. 末位為0的任意進制正整數,轉換為十進制數后一定為偶數
B. 若字符“Y”內碼用十六進制表示為59,則“Z”的內碼用十六進制表示為60
C. 英文字符在計算機內部使用ASCII碼進行存儲和處理
D. 用x位k進制數給y種不同的信息進行編碼,必須滿足y
A. 某校高二年級學生的學籍信息屬于大數據
B. 大數據時代,我們更強調事物因果關系的探求,而不是數據間的相關性
C. 對于購物網站的廣告推薦,一般采用批處理計算方式實現
D. 某購物平臺2023年“雙11”的交易數據屬于靜態數據
4. 小北利用python中的jieba分詞模塊對“大數據.txt”進行處理,創建了如圖所示的標簽云,下列說法正確的是( )
A. 該中文分詞算法是基于規則的分詞方法
B. 標簽云中必須顯示該文本中包含的全部詞語
C. 從標簽云中可以推測,“數據”、“數據庫”等詞語是該文本的重點詞語
D. 文本內容是結構化數據,需要轉化才能被計算機處理
5. 下列有關人工智能的說法不正確的是( )
A. 目前性能表現優越深度學習是聯結主義方法的典型代表
B. 人工智能技術推動人類社會進步的同時,也可能威脅人類安全
C. IBM將“沃森”的智能能力從益智游戲領域移植到了醫療領域,屬于混合增強智能
D. 圖靈機是一個理論上的計算模型
6. 下列關于數據結構的說法正確的是( )
A. 用不同的數據結構解決同一個問題時,其算法效率是一樣的
B. 使用數組存儲數據時,數據訪問效率低,數據插入刪除速度快
C. 在word中執行“撤銷鍵入”操作的原理與隊列的特點相同
D. 線性表是一種廣泛使用的數據結構,常見的線性表有:字符串、隊列、棧等
7. 已知棧st中從棧底到棧頂的元素依次為a、b、c,元素d正等待進棧,以下出棧序列不可能的是( )
A. c,b,d,a B. c,d,a,b C. c,d,b,a D. c,b,a,d
8. 下列python語句的值為True的是( )
A. "8">"18" or 9>10 B. {1:"a",2:"b"}[1]=="b" C. int("20"+"23")<48 D. 3 in ["3",[2,3]]
9. 已知字符串s="python",現要將s中的第一個字符改為大寫字母,以下操作方法可行的是( )
①s[0]="P" ②s[0]=chr(ord(s[0])-ord("a")+ord("A")) ③s="P"+s[1:] ④s=s[0].upper()+s[1:]
A. ①② B. ③④ C. ①②③ D. ①②③④
10. 有如下python程序段,可以實現從班級學生中隨機抽取五名學生參與班會活動。
import random#random模塊中的常用函數如上表所示
#導入學生名單到列表a中,a=["張*","李*",…,"丁*"]
namelist=[]#列表namelist存放隨機生成的學生名單
for i in range(5):
t=①
②
a.pop(t)
上述程序段中劃線處依次可填入的語句是( )
A. ①random.randint(0,len(a)) ②namelist.append(a[t]) B. ①random.randint(0,len(a)-1) ②namelist+=a[t]
C. ①random.choice(range(0,len(a))) ②namelist+=[a[t]] D. ①int(random.random()*len(a)) ②namelist+=a[t]
11. 假如正整數x在n進位下的平方可以分割為兩個正整數,且這兩個數相加后恰等于x,那么x就是n進位下的卡布列克數。例如9 =81,而9=8+1,所以9是十進位下的卡布列克數,9也是十進位下最小的有意義的卡布列克數。編寫如下自定義函數判定x是否為十進位下的卡布列克數。
def Kaprekarnumber(x):
w=10;m=x*x
else:#與while語句對齊
return False
關于上述程序代碼,以下說法正確的是( )
A. 執行語句print(Kaprekar_number(45)),輸出結果為False
B. 若將語句①while后面的m>w修改為m>=w,其他部分保持不變,不影響函數功能
C. 語句塊②可用語句return m//w+m%w==x代替
D. 交換語句塊②和語句③的順序,不影響函數功能
12. 有如下python程序段,執行該程序段后,輸出結果不可能的是( )
import random as rd
st=[1]*10;top=0
for i in range(5):
num=rd.randint(1,6)
if num>=st[top]:
top+=1;st[top]=num
elif num%2==0:
top-=1
while top>=0:
print(st[top],end="");top-=1
A. 6 3 3 1 1 1 B. 1 C. 4 2 2 D. 6 6 6 1
二、非選擇題(本大題共3小題,其中第13小題7分,第14小題10分,第15小題9分,共26分)
13. 為了解學生每天參與早鍛煉的情況,某中學在操場的出入口安裝了智能門禁系統。學生每天早晨從寢室區入口刷臉進入操場,鍛煉結束再從靠近教學樓一側刷臉出操場,學校可根據每日刷臉記錄了解學生的早鍛煉情況?,F將操場門禁系統刷臉數據導出存儲在文件“刷臉記錄.xlsx”中(部分數據如圖a所示),并編寫如下python程序,統計分析各班的早鍛煉情況。
圖a 圖b
(1)編寫統計人數函數tjrs。根據刷臉記錄,統計某年(y)某月(m)各班每日參加早鍛煉的人數,生成數據如圖b所示。
(說明:生成日期函數scrq,根據年份月份,生成對應的日期列表,例2023年10月生成的日期列表為["2023-10-01","2023-10-02",……,"2023-10-31"],代碼略。)
def tjrs(datay,m):
data new=pd.DataFrame()
for x in scrq(y,m):
data1=data[①____]#篩選出日期列的值為x的所有數據
s=data1groupby("班級",asindex=False)②____
s["日期"]=x
s=s.rename(columns={"姓名":"人數"})
s=s.drop("時間",axis=1)
datanew=datanew.append(s)
#將datanew按班級、日期進行排序,排序后重置索引,代碼略
return datanew
(2)編寫生成相應班級(bj)某月(m)每日參與早鍛煉情況折線圖函數bjtb。
def bjtb(data,bj,m):
#從data中篩選出班級為bj的所有數據存入data_bj中,代碼略
for i in data_bj.index:#去掉日期列(格式如圖a所示)的年份、月份
data_bj["日期"][i]=
plt.plot(databj["日期"],data_bj["人數"],label=bj)
#設置圖表標題、顯示圖例、顯示圖表,代碼略
上述程序劃線處可以填入的代碼為____(多選,填字母)
A.data_bj["日期"][i][-2:] B.data_bj."日期"[i][8:] C.data_bj.at[i]["日期"][-2:] D.data_bj.at[i,"日期"][8:]
(3)主程序。讀取“刷臉記錄.xlsx”文件,根據輸入的年份、月份統計某年某月各班每日參加早鍛煉的人數,生成相應班級的圖表。
import pandas as pd
import matplotlib.pyplot as plt
data=pd.read_excel("刷臉記錄.xlsx")
#依次輸入年份(year)、月份(month)、班級(bj),代碼略
Data_tj=tjrs(data,year,month)#統計各班每日參與早鍛煉的人數
bjtb(data_tj,bj,month)#生成輸入班級對應月份的圖表,如圖c所示
經過上述程序處理,從得到的數據統計結果(如圖b和圖c所示)可以看出,高一(1)班10月4日和10月11日參與早鍛煉人數與其它時間的參與人數有較大偏差,這屬于常見的數據問題中的____(單選,填字母:A數據異常/B邏輯錯誤/C格式不致)。
圖c
14. 楊輝三角,是二項式系數在三角形中的一種幾何排列,其最左側一列數字和右邊的斜邊數字均為1,內部其他位置上的每個數字均為上一行同一列數字與上一行前一列數字之和,前8行的楊輝三角如第圖a所示。
圖a楊輝三角 圖b三角形數壘
(1)如果用數據結構中隊列構建楊輝三角,編寫輸出前n行楊輝三角的python程序代碼如下,請在程序劃線處填入合適的代碼。
n=int(input("輸入行數:"))
que=[0]*1000
head=tail=0
que[tail]=1
print(que[tail]);tail=tail+1
for i in range(2,n+1):
print(que[tail],end="");tail=tail+1
for j in range(①____):
que[tail]=②____
print(que[tail],end="");tail=tail+1
head=head+1
print(que[tail]);tail=tail+1
③____
(2)三角形數壘(如圖b所示),是楊輝三角的變形,與楊輝三角不同的是最左側一列數字和右邊的斜邊數字均為1、2…n。若要使得程序能輸出三角形數壘,可通過將第(1)小題程序中的兩條加框語句que[tail]=1都修改為____實現。
(3)在上述程序中,給隊列que分配的最大空間為1000,存在空間浪費問題。為了提高空間利用效率,小北將隊列que改為了循環隊列,即將第2條語句que=[0]*1000修改為que=[0]*n,同時將程序中所有的head=head+1和tail=tail+1進行了修改,其中head=head+1應修改為____。
15. 某校舉行校園乒乓球循環賽,有n(假設n=2**k)名學生報名參加比賽,要求:
①每名選手都與其他n-1名選手比賽一次;
②每人每天只能賽一次;
③比賽共進行n-1天,要求每天沒有選手輪空。
以n=8(即k=3)為例,可以根據問題要求,制定出如圖a所示的一種循環比賽表:
圖a
從八名選手的循環比賽表中可以看出,這是一個具有對稱性的方陣,可以把方陣一分為四來看:
①左上角的4×4的方陣就是前四名選手的循環比賽表,而右上角的4×4的方陣就是后四名選手的循環比賽表,它們在本質上是一樣的,都是4名選手的循環比賽表,所不同的只是選手編號不同而已,將左上角方陣中的所有元素依次加上4就能得到右上角的方陣。
②下方的兩個方陣同樣具有對稱性。右下角的方陣應與左上角的方陣相同,左下角的方陣應與右上角的方陣相同。
可見,八名選手的循環比賽表可以由四名選手的循環比賽表根據對稱性生成,四名選手的循環比賽表可以由兩名選手的循環比賽表根據對稱性生成。那么,具有n名選手的情況可依此類推。八名選手的對稱性生成過程如圖b所示。
圖b 圖c
(1)在有n(假設n恰好等于2**k)名選手參賽的循環比賽表中,將左上角方陣中的所有元素依次加上 _____________(用k表示)就能得到右上角的方陣。
(2)實現上述功能的部分python程序代碼如下,請在劃線處填入合適的代碼。
#導入參賽選手名單,并將名單存入列表nlist中,nlist=["張*","李*",…],代碼略
import math
n=len(nlist)#假設參賽人數n恰好為2的k次方
def create_table(n):
a=[[1 for i in range(n)] for j in range(n)]
k=0;half=1
while k< math.log(n,2):#函數math.log(n,2)的功能為求以2為底n的對數
for i in range(half):#構造右上方方陣
for j in range(half):
a[i][j+half]=①____
for i in range(half): #對稱交換構造下半部分方陣
for j in range(half):
②____
a[i+half][j+half]=a[i][j]
③____
k+=1
return a
def print_table(a,n):
print("循環賽對戰表:",end="\n")
s=" "
for i in range(1,n):
s=s+"第"+str(i)+"天"
print(s)
for x in a:
for y in x:
print(④____,end=" ")
print()絕密★考試結束前
寧波市2023學年第一學期期末九校聯考
高二技術試題
考生須知:
1.本試卷分兩部分,第一部分信息技術,第二部分通用技術。全卷共12頁,滿分100分,考試時間90分鐘。
2.考生答題前,務必將自己的姓名、準考證號用黑色字跡的簽字筆或鋼筆填寫在答題紙上。
3.選擇題的答案用2B鉛筆將答題紙上對應題目的答案選項涂黑。
4.非選擇題的答案用黑色字跡的簽字筆或鋼筆寫在答題紙上相應區域內,作圖時可先使用2B鉛筆,確定后用黑色字跡的簽字筆或鋼筆描黑,答案寫在非答題紙上無效。
第一部分:信息技術(共50分)
一、選擇題(本大題共12小題,每小題2分,共24分。每小題列出的四個備選項中只有一個是符合題目要求的,不選、錯選、多選均不得分)
1. 下列關于數據、信息和知識的說法,不正確的是( )
A. 文字是數據的一種表現形式
B. 信息超出有效期后不再具有任何價值
C. 三角形(已知三條邊的長度)的面積可以根據海倫公式計算得到,這是知識的體現
D. 面對同樣的信息,不同的人可能形成不同的知識
【答案】B
【解析】
【詳解】本題考查的是數據、信息和知識。信息超出有效期后不再具有任何價值,也由一定的價值,故選項B說法錯誤。
2. 下列關于數制和編碼的說法,正確的是( )
A. 末位為0的任意進制正整數,轉換為十進制數后一定為偶數
B. 若字符“Y”的內碼用十六進制表示為59,則“Z”的內碼用十六進制表示為60
C. 英文字符在計算機內部使用ASCII碼進行存儲和處理
D. 用x位k進制數給y種不同的信息進行編碼,必須滿足y
【解析】
【詳解】本題考查的是進制數和編碼。在奇數進制中,末位為0的正整數,轉換為十進制數后不一定為偶數,選項A說法錯誤;若字符“Y”的內碼用十六進制表示為59,則“Z”的內碼用十六進制表示為5A,選項B說法錯誤;英文字符在計算機內部使用二進制數存儲和處理,選項C說法錯誤;用x位k進制數給y種不同的信息進行編碼,必須滿足y
A. 某校高二年級學生的學籍信息屬于大數據
B. 大數據時代,我們更強調事物因果關系的探求,而不是數據間的相關性
C. 對于購物網站的廣告推薦,一般采用批處理計算方式實現
D. 某購物平臺2023年“雙11”的交易數據屬于靜態數據
【答案】D
【解析】
【詳解】本題考查的是大數據。數據是指無法在一定時間內用常規軟件工具對其內容進行抓取、管理和處理的數據集合,某校高二年級學生的學籍信息不屬于大數據;大數據更關注事物的相關性而不是因果關系;對于購物網站的廣告推薦,一般采用分治思想。故本題應選D。
4. 小北利用python中的jieba分詞模塊對“大數據.txt”進行處理,創建了如圖所示的標簽云,下列說法正確的是( )
A. 該中文分詞算法是基于規則的分詞方法
B. 標簽云中必須顯示該文本中包含的全部詞語
C. 從標簽云中可以推測,“數據”、“數據庫”等詞語是該文本的重點詞語
D. 文本內容是結構化數據,需要轉化才能被計算機處理
【答案】C
【解析】
【詳解】本題考查的是標簽云。jieba分詞綜合了基于字符串匹配的算法和基于統計的算法,選項A說法錯誤;標簽云中不需要顯示該文本中包含的全部詞語,選項B說法錯誤;從標簽云中可以推測,“數據”、“數據庫”等詞語是該文本的重點詞語,選項C說法正確;文本內容是非結構化數據,故選項D說法錯誤。故本題應選C。
5. 下列有關人工智能的說法不正確的是( )
A. 目前性能表現優越的深度學習是聯結主義方法的典型代表
B. 人工智能技術推動人類社會進步的同時,也可能威脅人類安全
C. IBM將“沃森”的智能能力從益智游戲領域移植到了醫療領域,屬于混合增強智能
D. 圖靈機是一個理論上的計算模型
【答案】C
【解析】
【詳解】本題考查的是人工智能。將“沃森”的智能能力從益智游戲移植到醫療領域,屬于跨領域人工智能的應用,故本題選C選項。
6. 下列關于數據結構的說法正確的是( )
A. 用不同的數據結構解決同一個問題時,其算法效率是一樣的
B. 使用數組存儲數據時,數據訪問效率低,數據插入刪除速度快
C. 在word中執行“撤銷鍵入”操作的原理與隊列的特點相同
D. 線性表是一種廣泛使用的數據結構,常見的線性表有:字符串、隊列、棧等
【答案】D
【解析】
【詳解】本題考查的是數據結構相關知識。用不同的數據結構解決同一個問題時,其算法效率不一樣的,選項A說法錯誤;使用數組存儲數據時,數據訪問效率高,數據插入刪除速度慢,選項B說法錯誤;在word中執行“撤銷鍵入”操作的原理與棧的特點相同,選項C說法錯誤;線性表是一種廣泛使用的數據結構,常見的線性表有:字符串、隊列、棧等,選項D說法正確。故本題應選D。
7. 已知棧st中從棧底到棧頂元素依次為a、b、c,元素d正等待進棧,以下出棧序列不可能的是( )
A. c,b,d,a B. c,d,a,b C. c,d,b,a D. c,b,a,d
【答案】B
【解析】
【詳解】本題考查的是棧的操作。棧是先進先出。已知棧st中從棧底到棧頂的元素依次為a、b、c,故出棧的時候,a肯定在b、c后,b在c的后面。選項B中a在b前不可能。故本題應選B。
8. 下列python語句的值為True的是( )
A. "8">"18" or 9>10 B. {1:"a",2:"b"}[1]=="b" C. int("20"+"23")<48 D. 3 in ["3",[2,3]]
【答案】A
【解析】
【詳解】本題考查的是Python表達式。{1:"a",2:"b"}[1]="a"與"b"不相等,故返回值為False;int("20"+"23")=2023不小于48,故返回值為False;3 in ["3",[2,3]]返回值為False;"8">"18" or 9>10返回值為True。故本題應選A。
9. 已知字符串s="python",現要將s中的第一個字符改為大寫字母,以下操作方法可行的是( )
①s[0]="P" ②s[0]=chr(ord(s[0])-ord("a")+ord("A")) ③s="P"+s[1:] ④s=s[0].upper()+s[1:]
A. ①② B. ③④ C. ①②③ D. ①②③④
【答案】B
【解析】
【詳解】本題考查的是字符串操作。字符串是不可變對象,不能用下標賦值的方式去改變字符串,故①②方法不可行;upper( )方法將字符串中的小寫字母轉為大寫字母。故本題應選B。
10. 有如下python程序段,可以實現從班級學生中隨機抽取五名學生參與班會活動。
import random#random模塊中的常用函數如上表所示
#導入學生名單到列表a中,a=["張*","李*",…,"丁*"]
namelist=[]#列表namelist存放隨機生成的學生名單
for i in range(5):
t=①
②
a.pop(t)
上述程序段中劃線處依次可填入的語句是( )
A. ①random.randint(0,len(a)) ②namelist.append(a[t]) B. ①random.randint(0,len(a)-1) ②namelist+=a[t]
C. ①random.choice(range(0,len(a))) ②namelist+=[a[t]] D. ①int(random.random()*len(a)) ②namelist+=a[t]
【答案】C
【解析】
【詳解】本題考查的是隨機函數。random.randint(0,len(a))生成的整數包括len(a),超出了列表a的范圍,選項A不可行;namelist+=a[t]是將a[t]中字符分離后加入列表,選項B、D不可行;故本題應選C。
11. 假如正整數x在n進位下的平方可以分割為兩個正整數,且這兩個數相加后恰等于x,那么x就是n進位下的卡布列克數。例如9 =81,而9=8+1,所以9是十進位下的卡布列克數,9也是十進位下最小的有意義的卡布列克數。編寫如下自定義函數判定x是否為十進位下的卡布列克數。
def Kaprekarnumber(x):
w=10;m=x*x
else:#與while語句對齊
return False
關于上述程序代碼,以下說法正確的是( )
A. 執行語句print(Kaprekar_number(45)),輸出結果False
B. 若將語句①while后面的m>w修改為m>=w,其他部分保持不變,不影響函數功能
C. 語句塊②可用語句return m//w+m%w==x代替
D. 交換語句塊②和語句③的順序,不影響函數功能
【答案】B
【解析】
【詳解】本題考查的是自定義函數。45*45=2025,20+25=45,故輸出結果為:True,選項A說法錯誤;語句塊②可用語句return m//w+m%w==x代替,則只對未位分割成兩個整數后進行判斷后,直接返回,故選項C說法錯誤;交換語句塊②和語句③的順序,則缺少了對未位分割成兩個整數的判斷,故選項D說法錯誤;將語句①while后面的m>w修改為m>=w,其他部分保持不變,不影響函數功能,選項B說法正確,故本題應選B。
12. 有如下python程序段,執行該程序段后,輸出結果不可能的是( )
import random as rd
st=[1]*10;top=0
for i in range(5):
num=rd.randint(1,6)
if num>=st[top]:
top+=1;st[top]=num
elif num%2==0:
top-=1
while top>=0:
print(st[top],end="");top-=1
A. 6 3 3 1 1 1 B. 1 C. 4 2 2 D. 6 6 6 1
【答案】C
【解析】
【詳解】本題考查的是棧的操作。num=rd.randint(1,6),num數字是1~6整數。只有生成的數字小于棧頂元素而且為偶數時才出棧,st中初始值都為1,故棧低元素肯定為1(因為生成的num一直不比1?。9瘦敵龅慕Y果最后一位肯定為1,選項C最后一位為2,不符合,故本題應選C。
二、非選擇題(本大題共3小題,其中第13小題7分,第14小題10分,第15小題9分,共26分)
13. 為了解學生每天參與早鍛煉的情況,某中學在操場的出入口安裝了智能門禁系統。學生每天早晨從寢室區入口刷臉進入操場,鍛煉結束再從靠近教學樓一側刷臉出操場,學??筛鶕咳账⒛樣涗浟私鈱W生的早鍛煉情況?,F將操場門禁系統刷臉數據導出存儲在文件“刷臉記錄.xlsx”中(部分數據如圖a所示),并編寫如下python程序,統計分析各班的早鍛煉情況。
圖a 圖b
(1)編寫統計人數函數tjrs。根據刷臉記錄,統計某年(y)某月(m)各班每日參加早鍛煉的人數,生成數據如圖b所示。
(說明:生成日期函數scrq,根據年份月份,生成對應的日期列表,例2023年10月生成的日期列表為["2023-10-01","2023-10-02",……,"2023-10-31"],代碼略。)
def tjrs(data,y,m):
data new=pd.DataFrame()
for x in scrq(y,m):
data1=data[①____]#篩選出日期列的值為x的所有數據
s=data1groupby("班級",asindex=False)②____
s["日期"]=x
s=s.rename(columns={"姓名":"人數"})
s=s.drop("時間",axis=1)
datanew=datanew.append(s)
#將datanew按班級、日期進行排序,排序后重置索引,代碼略
return datanew
(2)編寫生成相應班級(bj)某月(m)每日參與早鍛煉情況折線圖函數bjtb。
def bjtb(data,bj,m):
#從data中篩選出班級為bj的所有數據存入data_bj中,代碼略
for i in data_bj.index:#去掉日期列(格式如圖a所示)的年份、月份
data_bj["日期"][i]=
plt.plot(databj["日期"],data_bj["人數"],label=bj)
#設置圖表標題、顯示圖例、顯示圖表,代碼略
上述程序劃線處可以填入的代碼為____(多選,填字母)
A.data_bj["日期"][i][-2:] B.data_bj."日期"[i][8:] C.data_bj.at[i]["日期"][-2:] D.data_bj.at[i,"日期"][8:]
(3)主程序。讀取“刷臉記錄.xlsx”文件,根據輸入的年份、月份統計某年某月各班每日參加早鍛煉的人數,生成相應班級的圖表。
import pandas as pd
import matplotlib.pyplot as plt
data=pd.read_excel("刷臉記錄.xlsx")
#依次輸入年份(year)、月份(month)、班級(bj),代碼略
Data_tj=tjrs(data,year,month)#統計各班每日參與早鍛煉的人數
bjtb(data_tj,bj,month)#生成輸入班級對應月份的圖表,如圖c所示
經過上述程序處理,從得到的數據統計結果(如圖b和圖c所示)可以看出,高一(1)班10月4日和10月11日參與早鍛煉人數與其它時間的參與人數有較大偏差,這屬于常見的數據問題中的____(單選,填字母:A數據異常/B邏輯錯誤/C格式不致)。
圖c
【答案】 ①. data["日期"]==x 或 data.日期]==x ②. count( ) ③. AD ④. A
【解析】
【詳解】本題考查的是利用pandas進行數據分析。
(1)篩選出日期列的值為x的所有數據,故①處應為:data["日期"]==x 或 data.日期]==x;統計某年(y)某月(m)各班每日參加早鍛煉的人數,故②處應為:count( )。
(2)日期格式:如2023-10-01,取出年份、月份,故③處應為:data_bj["日期"][i][-2:]或data_bj.at[i,"日期"][8:]選項AD正確。
(3)高一(1)班10月4日和10月11日參與早鍛煉人數與其它時間參與人數有較大偏差,這屬于常見的數據問題中的數據異常,故本題應選A。
14. 楊輝三角,是二項式系數在三角形中的一種幾何排列,其最左側一列數字和右邊的斜邊數字均為1,內部其他位置上的每個數字均為上一行同一列數字與上一行前一列數字之和,前8行的楊輝三角如第圖a所示。
圖a楊輝三角 圖b三角形數壘
(1)如果用數據結構中的隊列構建楊輝三角,編寫輸出前n行楊輝三角的python程序代碼如下,請在程序劃線處填入合適的代碼。
n=int(input("輸入行數:"))
que=[0]*1000
head=tail=0
que[tail]=1
print(que[tail]);tail=tail+1
for i in range(2,n+1):
print(que[tail],end="");tail=tail+1
for j in range(①____):
que[tail]=②____
print(que[tail],end="");tail=tail+1
head=head+1
print(que[tail]);tail=tail+1
③____
(2)三角形數壘(如圖b所示),是楊輝三角的變形,與楊輝三角不同的是最左側一列數字和右邊的斜邊數字均為1、2…n。若要使得程序能輸出三角形數壘,可通過將第(1)小題程序中的兩條加框語句que[tail]=1都修改為____實現。
(3)在上述程序中,給隊列que分配的最大空間為1000,存在空間浪費問題。為了提高空間利用效率,小北將隊列que改為了循環隊列,即將第2條語句que=[0]*1000修改為que=[0]*n,同時將程序中所有的head=head+1和tail=tail+1進行了修改,其中head=head+1應修改為____。
【答案】 ①. i-2 或 1,i-1 ②. que[head]+que[head+1] ③. head=head+1 ④. que[tail]=i ⑤. head=(head+1)%n
【解析】
【詳解】本題考查的是隊列綜合應用。
(1)外循環控制楊輝三角的行數,內循環控制每行的元素個數(除頭和尾),并計算每一個位置的值,故循環次數依次為:0、1、……n-2,故①處應為:i-2 或 1,i-1;head表示上一行第一列,內部其他位置上的每個數字均為上一行同一列數字與上一行前一列數字之和,故②處應為:que[head]+que[head+1];③處,內循環結束后head指向上一行的隊尾,需要將它移動到這行的隊頭,為下一行計算內部其他位置上的數字,做準備,故此處應為:head=head+1。
(2)加框語句que[tail]=1是控制最左側一列數字和右邊的斜邊數字,三角形數壘最左側一列數字和右邊的斜邊數字均為1、2…n,故此處應為:que[tail]=i。
(3)que=[0]*1000修改為que=[0]*n,則需要將隊列循環利用,將隊列構成一個循環隊列,故中head=head+1應修改為:head=(head+1)%n。
15. 某校舉行校園乒乓球循環賽,有n(假設n=2**k)名學生報名參加比賽,要求:
①每名選手都與其他n-1名選手比賽一次;
②每人每天只能賽一次;
③比賽共進行n-1天,要求每天沒有選手輪空。
以n=8(即k=3)為例,可以根據問題要求,制定出如圖a所示的一種循環比賽表:
圖a
從八名選手的循環比賽表中可以看出,這是一個具有對稱性的方陣,可以把方陣一分為四來看:
①左上角的4×4的方陣就是前四名選手的循環比賽表,而右上角的4×4的方陣就是后四名選手的循環比賽表,它們在本質上是一樣的,都是4名選手的循環比賽表,所不同的只是選手編號不同而已,將左上角方陣中的所有元素依次加上4就能得到右上角的方陣。
②下方兩個方陣同樣具有對稱性。右下角的方陣應與左上角的方陣相同,左下角的方陣應與右上角的方陣相同。
可見,八名選手的循環比賽表可以由四名選手的循環比賽表根據對稱性生成,四名選手的循環比賽表可以由兩名選手的循環比賽表根據對稱性生成。那么,具有n名選手的情況可依此類推。八名選手的對稱性生成過程如圖b所示。
圖b 圖c
(1)在有n(假設n恰好等于2**k)名選手參賽的循環比賽表中,將左上角方陣中的所有元素依次加上 _____________(用k表示)就能得到右上角的方陣。
(2)實現上述功能的部分python程序代碼如下,請在劃線處填入合適的代碼。
#導入參賽選手名單,并將名單存入列表nlist中,nlist=["張*","李*",…],代碼略
import math
n=len(nlist)#假設參賽人數n恰好為2的k次方
def create_table(n):
a=[[1 for i in range(n)] for j in range(n)]
k=0;half=1
while k< math.log(n,2):#函數math.log(n,2)的功能為求以2為底n的對數
for i in range(half):#構造右上方方陣
for j in range(half):
a[i][j+half]=①____
for i in range(half): #對稱交換構造下半部分方陣
for j in range(half):
②____
a[i+half][j+half]=a[i][j]
③____
k+=1
return a
def print_table(a,n):
print("循環賽對戰表:",end="\n")
s=" "
for i in range(1,n):
s=s+"第"+str(i)+"天"
print(s)
for x in a:
for y in x:
print(④____,end=" ")
print()
print_table(create_table(n),n)#生成如圖c所示循環賽對戰表
【答案】 ①. 2**(k-1) 或 2k-1 ②. a[i][j]+half ③. a[i+half][j]=a[i][j+half] ④. half*=2 或 half= half*2 ⑤. nlist[y-1]
【解析】
【詳解】本題考查的是Python綜合應用。
(1)由圖b可知,如果2名選手,將左上角方陣中的所有元素依次加上1就能得到右上角的方陣;如果4名選手,將左上角方陣中的所有元素依次加上2就能得到右上角的方陣;以此類推故k名選手參賽,將左上角方陣中的所有元素依次加上2**(k-1) 或 2k-1,就能得到右上角的方陣。
展開更多......
收起↑