内容正文:
绍兴市2025学年第二学期高中期末调测
高二技术
注意事项:1.本试卷分两部分,第一部分信息技术,第二部分通用技术。全卷共14页,第一部分1至8页,第二部分9至14页;2.考试时间90分钟,满分100分。
第一部分 信息技术(共50分)
一、选择题(本大题共12小题,每小题2分,共24分。在每小题给出的四个选项中,只有一个符合题目要求)
阅读下列材料,完成下面小题:
某校智慧考勤系统,利用摄像头实时采集进校人员的人脸信息,采集的数据经无线网络传输至云服务器,服务器对比人脸库完成身份验证并生成考勤报表。当系统识别到未登记人员或迟到等异常考勤时,向班主任、德育管理员的微信端推送提醒信息。
1. 下列关于该系统中数据的说法,正确的是( )
A. 摄像头采集的人脸图像属于结构化数据
B. 服务器以二进制形式存储人脸数据
C. 考勤报表中的数据表现形式仅为数字
D. 服务器对比人脸库过程不产生新数据
2. 下列关于该系统组成的描述,正确的是( )
A. 摄像头是该系统的输出设备
B. 无线网络的信号质量不影响系统运行
C. 班主任不属于该系统的用户
D. 系统的正常运行需要软硬件协同工作
3. 下列关于该系统功能与应用的描述,不正确的是( )
A. 该系统的运行对外部环境有依赖
B. 该系统没有数据输出
C. 识别师生身份采用了人工智能技术
D. 服务器会对考勤异常数据进行分析处理
4. 下列关于该系统网络技术的分析,正确的是( )
A. 系统推送提醒信息是网络资源共享的体现
B. 人脸识别数据的传输无需遵循任何网络协议
C. 系统中的所有数据传输均需采用移动通信技术
D. 云服务器必须部署在校园本地局域网中
5. 下列关于该系统安全与防护的做法,不合理的是( )
A. 及时修复平台的系统漏洞
B. 对考勤数据进行及时的备份
C. 对师生人脸信息进行加密存储
D. 为所有用户设置相同的访问控制权限
6. 若摄像头采集的是分辨率1024*768像素,位深度32位的BMP图像,下列说法正确的是( )
A. 该BMP图像放大显示后不会出现失真现象
B. 若图像画面内容变复杂,则图像存储容量会变大
C. 将图像位深度调整为16位,文件存储容量变为原来的1/2
D. 若将图像存储为JPEG格式,则文件容量会更大
7. 下列程序段中输入值x为1到10之间的整数(包括1和10),其功能与如图所示流程图不一致的是( )
A.
x=int(input())
if x>5:
if x>=10:
s=x
else:
s=x+1
else:
s=x-1
print(s)
B.
x=int(input())
if x<=5:
s=x-1
elif x<10:
s=x+1
else:
s=x
print(s)
C.
x=int(input())
s=x
if x>5 and x<=10:
s=x+1
elifx<=5:
s=x-1
print(s)
D.
x=int(input())
s=x-1
if x>=10:
s=x
elifx>5:
s=x+1
print(s)
A. A B. B C. C D. D
8. 栈初始为空,元素入栈顺序为“生”“旦”“净”“末”“丑”,若要求出栈顺序为“旦”“净”“生”“末”“丑”,则栈的容量至少为( )
A. 2 B. 3 C. 4 D. 5
9. 食堂打饭窗口每人每次限打1份,耗时10秒。若需要打多份饭,则每打完1份需重新排入队尾,打够所有份数后离开。设只开设一个窗口且有4人排队,每人需打饭份数依次为[3,4,1,2],则30秒后,队列中每人所需打饭份数依次为( )
A. [2,2,3,1] B. [3,2,2] C. [2,3,2] D. [2,2,3]
10. 有如下python程序段:
c= "a3k72m "
p=input()
t= " "
for ch in c:
if "0 " <= ch <= "9 ":
t+=p[int(ch)]
else:
t=chr(ord(ch)-32)+t
若p为“abcdefgh”,执行该程序后,t的值为( )
A. dhcMKA B. AdKhMc C. MKAdhc D. dAhKcM
11. 列表d存储链表各节点(节点数大于0),每个节点包含数据区域和指针区域,head为头指针。现要删除链表中数据值在[start,end]范围内的节点,实现该功能的部分Python程序段如下:
q=p=head
while p != -1:
if start <= d[p][0] < =end:
else:
q=p
p=d[p][1]
方框内应填入的正确代码是( )
A.
if p==head:
d[p][1]=head
head=q
else:
d[q][1]=d[p][1]
p=d[p][1]
B.
if p==head:
head=d[p][1]
q=head
else:
d[p][1]=d[q][1]
p=d[p][1]
C.
if p==head:
head=d[p][1]
q=head
else:
d[q][1]=d[p][1]
p=d[p][1]
D.
if p!=head:
head=d[p][1]
q=head
else:
d[q][1]=d[p][1]
p=d[p][1]
A. A B. B C. C D. D
12. 有如下Python 程序段:
import random
a=[0]*6
for i in range(6):
a[i]=random.randint(4,9)
i,n=0,len(a)
while i < n:
p=i+1
for j in range(i+1,n):
if a[i] != a[j]:
a[p]=a[j]
p+=1
n=p; i+=1
运行该程序后,a的值可能是( )
A. [4,5,7,3,4,5] B. [5,6,4,4,6,5] C. [8,7,9,7,4,9] D. [7,8,5,5,6,8]
二、综合题(本题共3小题,其中第13小题10分,第14小题7分,第15小题9分,共26分)
13. 某地下车库搭建了空气质量监测系统,对6个监测区(编号0~5)进行环境监测和排风控制。每个监测区安装CO浓度传感器,智能终端每15分钟采集一次传感器数据,通过无线网络上传至服务器。服务器分析数据后可生成各类统计报表并通过智能终端控制排风扇的启停。请回答下列问题。
(1)该系统中智能终端与服务器间数据流向为____(单选,填字母: A.单向/B.双向)。
(2)智能终端不能使用____上传环境数据至服务器(单选,填字母: A.Wi-Fi 技术/ B.RFID 技术/ C.5G技术)。
(3)系统运行后,数据库规模持续增大,为减轻服务器的存储压力,下列做法有效的是 (多选)
A. 采集时间间隔改为30分钟一次 B. 增加传感器的数量
C. 增大服务器CPU的核心数量 D. 扩展服务器的硬盘容量
(4)系统运行后,管理员发现服务器中0号区域实时记录的CO浓度超出设定的阈值,但对应的排风扇并未开启,请写出1种可能的原因并给出解决办法。
(5)现导出3月2日各个监测区数据至文件env.xlsx,部分数据如表所示。小华编写Python程序,统计各监测区中CO浓度超过该日平均浓度的次数,并找出次数最多的监测区,然后绘制该监测区当天各时段的CO浓度均值变化折线图,如图所示。
日期
时段
监测区
CO
3月2日
0
0
9
3月2日
0
0
10
3月2日
0
0
7
3月2日
0
0
9
3月2日
1
0
9
3月2日
1
0
10
3月2日
1
0
7
3月2日
1
0
7
……
3月2日
23
5
7
3月2日
23
5
8
3月2日
23
5
7
import pandas as pd
import matplotlib.pyplot as plt
#支持显示中文,代码略
df1=pd.read_excel("env.xlsx ") #读取文件
ave=df1["CO "].mean() #计算该日该监测区CO平均浓度
df2=df1[df1["CO "]>ave]
df3=①____ #按“监测区”分组,统计每个监测区中CO浓度超标次数
#重命名df3中的“CO”列名称为“次数”,代码略
#找出超标次数最多的监测区(若有多个取第一个),存入max_area
df3=②____
max_area=df3["监测区"].values[0]
#绘制超标次数最多的监测区当天各时段CO浓度均值变化折线图
df4=③____
df5=df4.groupby("时段",as_index=False)[ "CO "].mean()
plt.plot(④____)
#设置标题、x和y轴标签代码略
plt.show()
程序中①、②、③、④处可选的代码如下,请选择合适的代码填入划线处。
A.df2.groupby("监测区",as_index=False)[ "CO "].count()
B.df2.groupby("监测区",as_index=False)[ "CO "].sum()
C.df3.sort_values("次数",ascending=False).head(1)
D.df3.sort_values("监测区",ascending=True).tail(1)
E.df1[df1["监测区"]==max_area]
F.df3[df3["监测区"]==max_area]
G.df5["时段"],df5["CO "]
H.df5.index,df5["CO "]
14. 系统每隔15分钟执行一次判断:当某区域CO浓度高于阈值(10ppm)时,系统自动启动该区域的排风扇(每个区域独立排风,每次启动持续30分钟);若所有区域CO浓度均不高于阈值,则浓度最高的区域启动排风扇(若有多个区域浓度相同且均为最高,则均启动)。正在排风中的区域不参与浓度判断。请回答下列问题:
(1)若某次监测得到0~5号区域的CO浓度依次为8,12,12,9,15,8,此时没有区域正在排风,则本次需要启动排风扇的区域编号为____(填写区域编号,若有多个,中间用逗号分隔)。
(2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。
n=6 #监测区数量
co=[0]*n #依次存储各区域CO浓度
fan=[False]*n #排风扇状态标记
start_t=[-1]*n #记录开始排风的时间
ctime=0 #系统运行时长,系统刚启动时记为0
threshold=10 #CO浓度阈值
while True:
#从数据库读取各区域CO浓度存入co,co[i]存放i号区域的浓度值,代码略
t=[]
for i in range(n):
if not fan[i] and ①____:
t.append(i)
if len(t) == 0:
max_co=-1
for i in range(n):
if not fan[i] and co[i] > max_co:
②____
t=[i]
elif not fan[i] and co[i] == max_co:
t.append(i)
for i in t:
#启动i号区域的排风扇,代码略
fan[i]=True
start_t[i]=ctime
for i in range(n):
if fan[i] and ctime-start_t[i] >= 30:
③____
#执行停止排风扇操作,代码略
#延时15分钟,代码略
ctime+=15
15. 学校广播站计划更新歌单,原歌单中有n首歌曲,同学们新推荐了m首歌曲,已邀请部分同学对这n+m 首歌曲进行评分。其中:
①原歌单中n首歌曲的名称及其评分依次存储于列表a中;
②新推荐的m首歌曲的名称及其评分依次存储于列表b中。
歌单更新规则:从原歌单和新推荐歌单中,按评分从高到低,选出评分最高的前n首歌曲形成新歌单。若第n首歌曲出现评分并列情况,则所有同分歌曲一并纳入新歌单。请回答下面问题:
(1)若n=6,m=3,列表a的值为:[['平凡之路',93],[ '我的祖国',90],[ '少年中国说',96],[ '万疆',82],[ '不忘初心',85],[ '星辰大海',88]];列表b的值为:[['萱草花',85],[ '红旗飘飘',71],[ '龙的传人',97]]。按规则更新歌单后,新歌单中入选的歌曲数量是____
(2)定义函数shuff(a)如下:
def shuff(a):
#实现对列表a中的元素按评分降序排序,代码略
return a
若列表a的值为:[['平凡之路',93],[ '我的祖国',90],[ '少年中国说',96],[ '万疆',82],[ '不忘初心',85],[ '星辰大海',88]],调用shuff(a)函数。请回答①和②两个问题。
①调用shuff(a)函数后,a[1]的值是____
②将元素[“少年”,91]插入到有序序列a中,若插入后a中元素仍按评分降序排序,则[“少年”,91]在列表a中的索引是____
(3)实现歌单更新的部分Python程序如下,请在划线处填入合适的代码。
def getImin(b,k):
'''在列表b的前k个元素中找出评分值最小的元素(多个元素评分最小取第一个),返回其索引,代码略'''
def proc(a,b):
n,m=len(a),len(b)
na,nb=len(a),len(b)
for i in range(m):
①____
if a[na-1][1] > b[imin][1]:
b[imin]=b[nb-1]
nb-=1
else:
for j in range(na):
if ②____
break
a.insert(j,b[imin]) #在a的j位置插入b[imin]
b[imin]=b[nb-1]
nb-=1
for i in range(n,len(a)): #处理第n名同分并列
if a[i-1][1] == a[i][1]:
③____
else:
break
return a[:na]
'''原歌单信息存入列表a,新推荐的歌单信息存入列表b,每个列表元素包含两个数据,依次是歌曲名称和评分;代码略'''
a=shuff(a)
res=proc(a,b)
#输出res列表中的处理结果,代码略
第1页/共1页
学科网(北京)股份有限公司
$
绍兴市2025学年第二学期高中期末调测
高二技术
注意事项:1.本试卷分两部分,第一部分信息技术,第二部分通用技术。全卷共14页,第一部分1至8页,第二部分9至14页;2.考试时间90分钟,满分100分。
第一部分 信息技术(共50分)
一、选择题(本大题共12小题,每小题2分,共24分。在每小题给出的四个选项中,只有一个符合题目要求)
阅读下列材料,完成下面小题:
某校智慧考勤系统,利用摄像头实时采集进校人员的人脸信息,采集的数据经无线网络传输至云服务器,服务器对比人脸库完成身份验证并生成考勤报表。当系统识别到未登记人员或迟到等异常考勤时,向班主任、德育管理员的微信端推送提醒信息。
1. 下列关于该系统中数据的说法,正确的是( )
A. 摄像头采集的人脸图像属于结构化数据
B. 服务器以二进制形式存储人脸数据
C. 考勤报表中的数据表现形式仅为数字
D. 服务器对比人脸库过程不产生新数据
2. 下列关于该系统组成的描述,正确的是( )
A. 摄像头是该系统的输出设备
B. 无线网络的信号质量不影响系统运行
C. 班主任不属于该系统的用户
D. 系统的正常运行需要软硬件协同工作
3. 下列关于该系统功能与应用的描述,不正确的是( )
A. 该系统的运行对外部环境有依赖
B. 该系统没有数据输出
C. 识别师生身份采用了人工智能技术
D. 服务器会对考勤异常数据进行分析处理
4. 下列关于该系统网络技术的分析,正确的是( )
A. 系统推送提醒信息是网络资源共享的体现
B. 人脸识别数据的传输无需遵循任何网络协议
C. 系统中的所有数据传输均需采用移动通信技术
D. 云服务器必须部署在校园本地局域网中
5. 下列关于该系统安全与防护的做法,不合理的是( )
A. 及时修复平台的系统漏洞
B. 对考勤数据进行及时的备份
C. 对师生人脸信息进行加密存储
D. 为所有用户设置相同的访问控制权限
6. 若摄像头采集的是分辨率1024*768像素,位深度32位的BMP图像,下列说法正确的是( )
A. 该BMP图像放大显示后不会出现失真现象
B. 若图像画面内容变复杂,则图像存储容量会变大
C. 将图像位深度调整为16位,文件存储容量变为原来的1/2
D. 若将图像存储为JPEG格式,则文件容量会更大
【答案】1. B 2. D 3. B 4. A 5. D 6. C
【解析】
【1题详解】
本题考查数据相关基础知识。摄像头采集的人脸图像属于非结构化数据,A错误;计算机中所有数据都以二进制形式存储,因此服务器以二进制形式存储人脸数据,B正确;考勤报表中的数据可以包含文字、数字等多种表现形式,并非仅为数字,C错误;服务器对比人脸库会生成身份验证结果,会产生新数据,D错误。故答案为:B。
【2题详解】
本题考查信息系统的组成相关知识。摄像头用于采集人脸信息,属于系统的输入设备,A错误;无线网络的信号质量会影响数据传输,会影响系统正常运行,B错误;班主任接收异常提醒、查看考勤信息,属于该系统的用户,C错误;信息系统的正常运行需要硬件设备和系统软件等协同工作,D正确。故答案为:D。
【3题详解】
本题考查信息系统的功能与应用相关知识,要求选出不正确的描述。该系统需要依赖网络、硬件设备等外部条件,运行对外部环境有依赖,A描述正确;该系统会生成考勤报表、向终端推送提醒信息,存在数据输出,B描述错误,符合题意;人脸识别身份识别用到了人工智能的计算机视觉技术,C描述正确;系统识别到异常考勤后,服务器会对异常数据进行分析处理并推送提醒,D描述正确。故答案为:B。
【4题详解】
本题考查信息系统中网络技术相关知识。系统推送提醒信息实现了信息的共享,是网络资源共享功能的体现,A正确;所有网络数据传输都需要遵循对应的网络协议,B错误;系统中的数据也可通过无线局域网等方式传输,并非所有数据传输都需要移动通信技术,C错误;云服务器由云服务商提供,不需要部署在校园本地局域网中,D错误。故答案为:A。
【5题详解】
本题考查信息系统安全与防护相关知识,要求选出不合理的做法。及时修复系统漏洞可以提升系统安全性,做法合理;及时备份考勤数据可以避免数据丢失,做法合理;对师生人脸信息加密存储可以保护用户隐私安全,做法合理;不同用户的职责与访问需求不同,设置所有用户相同的访问控制权限会带来数据安全风险,做法不合理。故答案为:D。
【6题详解】
本题考查位图图像的属性与存储相关知识。该BMP图像是位图,放大后会出现马赛克失真,只有矢量图放大才不会失真,A错误;位图的存储容量只和分辨率、位深度有关,和画面内容复杂程度无关,B错误;位图存储容量计算公式为:存储容量=分辨率×位深度/8,位深度从32位调整为16位,存储容量变为原来的1/2,C正确;JPEG是有损压缩格式,将BMP存储为JPEG格式后,文件容量会变小,D错误。故答案为:C。
7. 下列程序段中输入值x为1到10之间的整数(包括1和10),其功能与如图所示流程图不一致的是( )
A.
x=int(input())
if x>5:
if x>=10:
s=x
else:
s=x+1
else:
s=x-1
print(s)
B.
x=int(input())
if x<=5:
s=x-1
elif x<10:
s=x+1
else:
s=x
print(s)
C.
x=int(input())
s=x
if x>5 and x<=10:
s=x+1
elifx<=5:
s=x-1
print(s)
D.
x=int(input())
s=x-1
if x>=10:
s=x
elifx>5:
s=x+1
print(s)
A. A B. B C. C D. D
【答案】C
【解析】
【详解】本题考查分支流程图的功能理解与Python分支程序的逻辑分析。首先梳理流程图的功能:输入x为1~10的整数,规则为:若x≤5,s=x-1;若5<x<10,s=x+1;若x=10,s=x。A选项:外层分支判断x>5,x≤5时s=x-1;x>5时内层判断x≥10,x=10时s=x,否则s=x+1,和流程图功能一致。 B选项:多分支判断,x≤5时s=x-1,55 and x<=10,会执行s=x+1,得到s=11,不符合流程图中x=10时s=x的要求,功能不一致。 D选项:初始s=x-1对应x≤5的结果,x≥10时修改s为x,5<x<10时修改s为x+1,和流程图功能一致。 故答案为:C。
8. 栈初始为空,元素入栈顺序为“生”“旦”“净”“末”“丑”,若要求出栈顺序为“旦”“净”“生”“末”“丑”,则栈的容量至少为( )
A. 2 B. 3 C. 4 D. 5
【答案】A
【解析】
【详解】本题考查栈的入栈出栈操作规则。我们按照给定入栈顺序和要求的出栈顺序逐步模拟操作,寻找满足要求的最小容量:第一步,将“生”入栈,栈大小为1;第二步,将“旦”入栈,栈大小变为2;第三步,弹出“旦”,符合出栈顺序的第一个元素,此时栈内剩余“生”,大小为1;第四步,将“净”入栈,栈大小变为2;第五步,弹出“净”,符合出栈顺序的第二个元素,此时栈内剩余“生”,大小为1;第六步,弹出“生”,符合出栈顺序的第三个元素,栈变为空;第七步,依次入栈出栈“末”、“丑”,过程中栈最大大小仅为1。整个过程栈中同时存储的元素最多为2个,因此栈的容量至少为2,对应第一个选项。故答案为:A。
9. 食堂打饭窗口每人每次限打1份,耗时10秒。若需要打多份饭,则每打完1份需重新排入队尾,打够所有份数后离开。设只开设一个窗口且有4人排队,每人需打饭份数依次为[3,4,1,2],则30秒后,队列中每人所需打饭份数依次为( )
A. [2,2,3,1] B. [3,2,2] C. [2,3,2] D. [2,2,3]
【答案】D
【解析】
【详解】本题考查逻辑推理与流程模拟能力。每10秒可以打1份饭,30秒一共完成3次打饭操作,逐步模拟排队过程:初始排队四人所需打饭份数依次为[3,4,1,2]。第一个10秒,队首第一人打1份,还剩3-1=2份,没有打完,重新排入队尾,此时队列变为[4,1,2,2];第二个10秒,当前队首的人打1份,还剩4-1=3份,没有打完,重新排入队尾,此时队列变为[1,2,2,3];第三个10秒,当前队首的人原本只需要打1份,打完后直接离开,不需要重新排队,最终队列中每人所需打饭份数依次为[2,2,3],对应第四个选项。故答案为:D。
10. 有如下python程序段:
c= "a3k72m "
p=input()
t= " "
for ch in c:
if "0 " <= ch <= "9 ":
t+=p[int(ch)]
else:
t=chr(ord(ch)-32)+t
若p为“abcdefgh”,执行该程序后,t的值为( )
A. dhcMKA B. AdKhMc C. MKAdhc D. dAhKcM
【答案】C
【解析】
【详解】本题考查Python程序执行逻辑与字符串处理。已知p为“abcdefgh”,p的索引从0开始,可得p[3]为d,p[7]为h,p[2]为c,逐一遍历字符串c中的每个字符处理:
第一个字符a是非数字,转大写A后拼接到空t的开头,此时t为A;
第二个字符3是数字,在t末尾拼接p[3]即d,此时t为Ad;
第三个字符k是非数字,转大写K拼接到t开头,此时t为KAd;
第四个字符7是数字,在t末尾拼接p[7]即h,此时t为KAdh;
第五个字符2是数字,在t末尾拼接p[2]即c,此时t为KAdhc;
第六个字符m是非数字,转大写M拼接到t开头,最终t的值为MKAdhc,对应第三个选项。故答案为:C。
11. 列表d存储链表各节点(节点数大于0),每个节点包含数据区域和指针区域,head为头指针。现要删除链表中数据值在[start,end]范围内的节点,实现该功能的部分Python程序段如下:
q=p=head
while p != -1:
if start <= d[p][0] < =end:
else:
q=p
p=d[p][1]
方框内应填入的正确代码是( )
A.
if p==head:
d[p][1]=head
head=q
else:
d[q][1]=d[p][1]
p=d[p][1]
B.
if p==head:
head=d[p][1]
q=head
else:
d[p][1]=d[q][1]
p=d[p][1]
C.
if p==head:
head=d[p][1]
q=head
else:
d[q][1]=d[p][1]
p=d[p][1]
D.
if p!=head:
head=d[p][1]
q=head
else:
d[q][1]=d[p][1]
p=d[p][1]
A. A B. B C. C D. D
【答案】C
【解析】
【详解】本题考查单链表的节点删除操作。q指向当前遍历节点p的前驱节点,删除符合条件的p节点时需要分两种情况讨论:若当前p是头节点,删除头节点后,新的头节点应该是原头节点p的后继节点,即head = d[p][1],同时q需要更新为新的头节点head;若p不是头节点,需要将前驱节点q的指针域指向p的后继节点,也就是d[q][1] = d[p][1],删除完成后p移动到下一个节点继续遍历即可。分析选项:A头节点更新逻辑错误,B非头节点删除的指针赋值错误,D判断条件错误,只有C符合删除逻辑要求。故答案为:C。
12. 有如下Python 程序段:
import random
a=[0]*6
for i in range(6):
a[i]=random.randint(4,9)
i,n=0,len(a)
while i < n:
p=i+1
for j in range(i+1,n):
if a[i] != a[j]:
a[p]=a[j]
p+=1
n=p; i+=1
运行该程序后,a的值可能是( )
A. [4,5,7,3,4,5] B. [5,6,4,4,6,5] C. [8,7,9,7,4,9] D. [7,8,5,5,6,8]
【答案】B
【解析】
【详解】本题考查Python程序运行逻辑分析与随机函数的特性。这段程序是数组去重:仅保留每种元素第一次出现的位置,将后续不重复的元素依次移动到数组前部,重复元素不移动,最终数组长度不变,数组前部(处理过的区域)一定没有重复元素,重复元素只能留在未处理的数组后部。程序中random.randint(4,9)生成的是范围[4,9]的整数,选项A中出现3,不可能生成,直接排除A。选项C:[8,7,9,7,4,9]中,两个7分别出现在索引1和索引3(都属于处理过的前部区域),前部出现重复,不符合去重逻辑,排除。选项D:[7,8,5,5,6,8],运行到处理i=2(a[i]=5)时,j=4的元素6≠5,会将6赋值到a[3],最终a[3]会变为6,不可能还是5,排除。选项B:[5,6,4,4,6,5],运行后去重到i=2(a[i]=4)时,后续只有j=3的元素等于4,不移动,最终n=3循环停止,后部保留原来的4,6,5,结果和选项一致,符合要求。故本题应选B。
二、综合题(本题共3小题,其中第13小题10分,第14小题7分,第15小题9分,共26分)
13. 某地下车库搭建了空气质量监测系统,对6个监测区(编号0~5)进行环境监测和排风控制。每个监测区安装CO浓度传感器,智能终端每15分钟采集一次传感器数据,通过无线网络上传至服务器。服务器分析数据后可生成各类统计报表并通过智能终端控制排风扇的启停。请回答下列问题。
(1)该系统中智能终端与服务器间数据流向为____(单选,填字母: A.单向/B.双向)。
(2)智能终端不能使用____上传环境数据至服务器(单选,填字母: A.Wi-Fi 技术/ B.RFID 技术/ C.5G技术)。
(3)系统运行后,数据库规模持续增大,为减轻服务器的存储压力,下列做法有效的是 (多选)
A. 采集时间间隔改为30分钟一次 B. 增加传感器的数量
C. 增大服务器CPU的核心数量 D. 扩展服务器的硬盘容量
(4)系统运行后,管理员发现服务器中0号区域实时记录的CO浓度超出设定的阈值,但对应的排风扇并未开启,请写出1种可能的原因并给出解决办法。
(5)现导出3月2日各个监测区数据至文件env.xlsx,部分数据如表所示。小华编写Python程序,统计各监测区中CO浓度超过该日平均浓度的次数,并找出次数最多的监测区,然后绘制该监测区当天各时段的CO浓度均值变化折线图,如图所示。
日期
时段
监测区
CO
3月2日
0
0
9
3月2日
0
0
10
3月2日
0
0
7
3月2日
0
0
9
3月2日
1
0
9
3月2日
1
0
10
3月2日
1
0
7
3月2日
1
0
7
……
3月2日
23
5
7
3月2日
23
5
8
3月2日
23
5
7
import pandas as pd
import matplotlib.pyplot as plt
#支持显示中文,代码略
df1=pd.read_excel("env.xlsx ") #读取文件
ave=df1["CO "].mean() #计算该日该监测区CO平均浓度
df2=df1[df1["CO "]>ave]
df3=①____ #按“监测区”分组,统计每个监测区中CO浓度超标次数
#重命名df3中的“CO”列名称为“次数”,代码略
#找出超标次数最多的监测区(若有多个取第一个),存入max_area
df3=②____
max_area=df3["监测区"].values[0]
#绘制超标次数最多的监测区当天各时段CO浓度均值变化折线图
df4=③____
df5=df4.groupby("时段",as_index=False)[ "CO "].mean()
plt.plot(④____)
#设置标题、x和y轴标签代码略
plt.show()
程序中①、②、③、④处可选的代码如下,请选择合适的代码填入划线处。
A.df2.groupby("监测区",as_index=False)[ "CO "].count()
B.df2.groupby("监测区",as_index=False)[ "CO "].sum()
C.df3.sort_values("次数",ascending=False).head(1)
D.df3.sort_values("监测区",ascending=True).tail(1)
E.df1[df1["监测区"]==max_area]
F.df3[df3["监测区"]==max_area]
G.df5["时段"],df5["CO "]
H.df5.index,df5["CO "]
【答案】(1)B (2)B (3)AD
(4)风扇供电异常,检查电源/继电器;智能终端与风扇控制线松动,检查接线;风扇损坏,更换设备;区域编号映射错误,修正配置;或其他合理答案
(5) ①. A ②. C ③. E ④. G
【解析】
【详解】本题考查物联网基础知识与Python数据分析综合应用。
(1)智能终端需要向服务器上传采集的环境数据,服务器也需要向智能终端下发控制排风扇的指令,数据可以双向流动,故选B。
(2)Wi-Fi技术和5G技术都可以实现无线网络数据传输,RFID技术主要用于标签识别,不适合上传环境监测的批量数据,故选B。
(3)将采集时间间隔改为30分钟一次,会减少采集的数据总量,能够减轻服务器存储压力;扩展服务器硬盘容量可以增加可用存储空间,缓解存储压力;增加传感器数量会新增更多数据,增大CPU核心数量只能提升运算能力,无法减轻存储压力。故选AD
(4)该故障只要给出合理的原因和对应解决方法即可,例如风扇供电异常,解决方法是检查电源;或者智能终端与风扇控制线松动,解决方法是检查接线;风扇损坏则更换设备即可。
(5)①处要求按监测区分组统计超标次数,df2已经是筛选后的所有超标数据,分组后对CO列计数就能得到每个监测区的超标次数,因此选A;②处需要找出超标次数最多的监测区,多个相同次数取第一个,需要按照次数降序排序后取第一条数据,因此选C;③处需要获取目标监测区的所有原始数据,用来计算各时段的CO浓度均值,需要从原始数据df1中筛选出对应监测区的数据,因此选E;④处绘制折线图,x轴为时段,y轴为对应时段的CO浓度均值,因此x参数取df5的时段列,y参数取df5的CO列,选G。
14. 系统每隔15分钟执行一次判断:当某区域CO浓度高于阈值(10ppm)时,系统自动启动该区域的排风扇(每个区域独立排风,每次启动持续30分钟);若所有区域CO浓度均不高于阈值,则浓度最高的区域启动排风扇(若有多个区域浓度相同且均为最高,则均启动)。正在排风中的区域不参与浓度判断。请回答下列问题:
(1)若某次监测得到0~5号区域的CO浓度依次为8,12,12,9,15,8,此时没有区域正在排风,则本次需要启动排风扇的区域编号为____(填写区域编号,若有多个,中间用逗号分隔)。
(2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。
n=6 #监测区数量
co=[0]*n #依次存储各区域CO浓度
fan=[False]*n #排风扇状态标记
start_t=[-1]*n #记录开始排风的时间
ctime=0 #系统运行时长,系统刚启动时记为0
threshold=10 #CO浓度阈值
while True:
#从数据库读取各区域CO浓度存入co,co[i]存放i号区域的浓度值,代码略
t=[]
for i in range(n):
if not fan[i] and ①____:
t.append(i)
if len(t) == 0:
max_co=-1
for i in range(n):
if not fan[i] and co[i] > max_co:
②____
t=[i]
elif not fan[i] and co[i] == max_co:
t.append(i)
for i in t:
#启动i号区域的排风扇,代码略
fan[i]=True
start_t[i]=ctime
for i in range(n):
if fan[i] and ctime-start_t[i] >= 30:
③____
#执行停止排风扇操作,代码略
#延时15分钟,代码略
ctime+=15
【答案】(1)1,2,4
(2) ①. co[i] > threshold或co[i] > 10 ②. max_co=co[i] ③. fan[i]=False
【解析】
【详解】本题考查逻辑分析能力与Python程序逻辑理解能力。
(1)题目规则为只要未排风区域的CO浓度高于阈值10ppm就需要启动该区域排风扇,仅当所有未排风区域浓度都不高于阈值时,才启动浓度最高的区域排风扇。本题中所有区域都未排风,给定浓度里高于10ppm的区域编号为1、2、4,因此这三个区域需要启动。
(2)①处作用是筛选未排风且浓度高于阈值的区域存入列表t,因此此处条件为判断当前区域浓度高于阈值,故此处代码为:co[i] > threshold或co[i] > 10;②处遍历找未排风区域最高浓度时,找到更大的浓度值后需要更新记录的最大浓度值,故此处代码为:max_co=co[i];③处排风扇运行时长达到30分钟后需要停止排风,修改排风扇状态标记即可,故此处应为:fan[i]=False。
15. 学校广播站计划更新歌单,原歌单中有n首歌曲,同学们新推荐了m首歌曲,已邀请部分同学对这n+m 首歌曲进行评分。其中:
①原歌单中n首歌曲的名称及其评分依次存储于列表a中;
②新推荐的m首歌曲的名称及其评分依次存储于列表b中。
歌单更新规则:从原歌单和新推荐歌单中,按评分从高到低,选出评分最高的前n首歌曲形成新歌单。若第n首歌曲出现评分并列情况,则所有同分歌曲一并纳入新歌单。请回答下面问题:
(1)若n=6,m=3,列表a的值为:[['平凡之路',93],[ '我的祖国',90],[ '少年中国说',96],[ '万疆',82],[ '不忘初心',85],[ '星辰大海',88]];列表b的值为:[['萱草花',85],[ '红旗飘飘',71],[ '龙的传人',97]]。按规则更新歌单后,新歌单中入选的歌曲数量是____
(2)定义函数shuff(a)如下:
def shuff(a):
#实现对列表a中的元素按评分降序排序,代码略
return a
若列表a的值为:[['平凡之路',93],[ '我的祖国',90],[ '少年中国说',96],[ '万疆',82],[ '不忘初心',85],[ '星辰大海',88]],调用shuff(a)函数。请回答①和②两个问题。
①调用shuff(a)函数后,a[1]的值是____
②将元素[“少年”,91]插入到有序序列a中,若插入后a中元素仍按评分降序排序,则[“少年”,91]在列表a中的索引是____
(3)实现歌单更新的部分Python程序如下,请在划线处填入合适的代码。
def getImin(b,k):
'''在列表b的前k个元素中找出评分值最小的元素(多个元素评分最小取第一个),返回其索引,代码略'''
def proc(a,b):
n,m=len(a),len(b)
na,nb=len(a),len(b)
for i in range(m):
①____
if a[na-1][1] > b[imin][1]:
b[imin]=b[nb-1]
nb-=1
else:
for j in range(na):
if ②____
break
a.insert(j,b[imin]) #在a的j位置插入b[imin]
b[imin]=b[nb-1]
nb-=1
for i in range(n,len(a)): #处理第n名同分并列
if a[i-1][1] == a[i][1]:
③____
else:
break
return a[:na]
'''原歌单信息存入列表a,新推荐的歌单信息存入列表b,每个列表元素包含两个数据,依次是歌曲名称和评分;代码略'''
a=shuff(a)
res=proc(a,b)
#输出res列表中的处理结果,代码略
【答案】(1)7 (2) ①. ['平凡之路',93] ②. 2
(3) ①. imin=getImin(b,nb) ②. a[j][1] < b[imin][1]或a[j][1] <= b[imin][1] ③. na+=1
【解析】
【详解】本题考查Python列表操作、排序应用与算法逻辑分析能力。
(1)将所有歌曲按评分降序排列后,前6位的第6位评分为85,还有另一个同分85的歌曲,按规则所有同分都要纳入,因此总数量为7。
(2)①:原列表a按评分降序排序后,索引0为“少年中国说96”,索引1为平凡之路93,因此a[1]为['平凡之路',93]。②:待插入歌曲评分为91,降序序列中91小于93大于90,插入后索引为2。
(3)①需要调用getImin获取b前nb个元素中最小评分元素的索引,因此填入imin=getImin(b,nb)。②a为降序有序序列,遍历找第一个评分小于待插入歌曲评分的位置,因此条件为a[j][1] < b[imin][1],等于也符合要求。③遇到第n位同分并列时,需要将新歌单长度加1,保证返回结果包含该同分元素,因此填入na+=1。
第1页/共1页
学科网(北京)股份有限公司
$