内容正文:
2026年高三基础测试
技术试题卷
(2026.9)
本试题卷分信息技术与通用技术两部分。满分100分,考试时间90分钟。
第一部分 信息技术(共50分)
一、单选题(本题共12小题,每小题2分,共24分)
阅读下列材料,完成下面小题。
某校操场安装了校园阳光跑系统。该系统通过配备多组高清摄像头,支持人脸识别,操场LED大屏实时显示学生的跑步距离、速度、排行榜等信息。系统服务器对运动数据进行汇总、存储与评估,并生成相应报表。学生可通过手机APP查看个人运动数据,班主任可查看本班级全体学生的数据。
1. 关于该系统中数据的说法,正确的是( )
A. 生成运动数据报表的过程中不会产生新的数据
B. 服务器中的所有数据都是以十六进制方式存储的
C. 学生通过APP查看到的运动曲线图片属于结构化数据
D. 摄像头采集人脸图像时,将模拟信号转换为计算机可处理的数字信号
2. 下列措施中能有效提升系统数据安全的是( )
A. 安装防火墙并定期查杀病毒
B. 对获取的图片数据采用JPEG格式存储
C. 向学生发送每日运动是否达标的提醒信息
D. 对学生和班主任设置相同的数据访问控制权限
3. 系统有时会出现人脸识别不匹配的情形,下列原因分析中不可能的是( )
A. 系统的人脸识别算法存在缺陷
B. 学生的手机上没有安装该系统的APP
C. 环境光线的强度影响了拍摄画面的清晰度
D. 学生的人脸数据没有录入到该系统的服务器
阅读下列材料,完成下面小题。
某市搭建了无人机空中巡检系统,为城市管理与应急保障等领域提供服务。无人机巡检时根据预先设定的航线,通过机载传感器感知自身状态和外部环境,机载无线通信模块实时回传高清视频至巡检系统。系统借助AI模型对数据进行处理,检测到异常情况时,立即在地图上高亮标示并弹窗预警,同时将信息推送给相关工作人员处理。
4. 下列关于该系统的组成与功能的说法,正确的是( )
A. 系统维护人员不属于该系统中的用户
B. 异常信息推送给管理员属于数据的输出功能
C. 异常情况在地图上高亮标示属于人工智能技术的应用
D. 传感器、无线通信模块和AI模型都属于该系统的硬件设备
5. 无人机将高清视频回传至巡检系统的过程中,必须用到的技术是( )
A. 数据加密技术 B. 人工智能技术 C. 射频识别技术 D. 无线通信技术
6. 该巡检系统覆盖4个巡检区域,每个区域部署20架无人机,每架无人机搭载6种传感器。现用二进制对这些传感器进行统一编码,二进制编码中前几位表示区域编号,中间几位表示无人机编号,其余位表示传感器编号,则所需的二进制位数最少是( )
A. 8 B. 9 C. 10 D. 11
7. 某栈初始为空,经过一系列入栈、出栈操作后,栈又为空。若元素入栈的顺序为a,b,c,d,则所有可能的出栈序列中,以b开头的序列个数是( )
A. 3 B. 4 C. 5 D. 6
8. 某二叉树有a,b,c,d四个节点,若后序遍历序列为dbca,则中序遍历结果不可能的是( )
A. dabc B. dcab C. dbac D. adbc
9. 有如下Python程序段:
s1 = "AB"; s2 = "AACBD"
i = 0; s3 = ""
for j in range(len(s2)):
if i >= len(s1):
break
if s1[i] == s2[j]:
i += 1
else:
s3 += s2[j]
print(s3)
运行该程序段后,变量 s3 的值是( )
A. "ACD" B. "CD" C. "AC" D. "AACBD"
10. 定义如下函数:
def f(a,b):
if a == b:
return b
if a > b:
return f(a-b, b)
else:
return f(a, b-a)
执行语句k=f(24, 14)后,k的值为( )
A. 2 B. 4 C. 6 D. 14
11. 对数组a执行排序算法:每一轮处理当前未排序区间,采用双向遍历方式。先从左向右扫描,将区间内最大值逐步移动至区间右端;再从右向左扫描,将区间内最小值逐步移动至区间左端。重复上述过程,直至整个数组按升序排列。实现该功能的部分Python程序段如下:
m1 = 0; m2 = len(a)-1
while m1 < m2:
for i in range(m1, m2):
if ① :
a[i], a[i + 1] = a[i + 1], a[i]
m2 - =1
for i in range(m2, ② , -1):
if a[i] < a[i - 1]:
a[i], a[i - 1] = a[i - 1], a[i]
m1 += 1
则划线处① ② 应填入的代码是( )
A. ①a[i] > a[i + 1] ②m1 B. ①a[i] > a[i + 1] ②m1+1
C. ①a[i] < a[i + 1] ②m1 D. ①a[i] < a[i + 1] ②m1+1
12. 有如下Python程序段:
from random import randint
st = [randint(1, 10) for i in range(10)]
i = 0; t = 0
while i < len(st):
f = st[i]; g = st[i+1]
if f >= t:
n = i
t = g
i += 2
执行后n的值为4,则下列表达式的值一定为True的是( )
① st[4] >= st[3] ② st[5] > st[6] ③ st[5] < st[7]
A. ①②③ B. ①③ C. ②③ D. ①②
二、综合题(本题共3小题,其中第13题10分,第14题7分,第15题9分,共26分)
13. 某校搭建了智慧图书馆管理系统。系统架构如图a所示,请回答下列问题:
(1)基于Flask框架编写服务器端的程序,部分代码如下。向视图函数time传递的参数start为480,end为660时,应访问的URL是http://________? start=480&end=660.
#导入flask等相关库,代码略
app = Flask(__name__n)
@ app. route("/setime")
def time():
start = int(request. args. get("start")) #学生进入图书馆时间
end = int(request. args. get("end")) #学生离开图书馆时间
#将开始学习时间和结束学习时间插入数据库,代码略
@ app. route("/bc")
def number():
bookcount = int(request. args. get(" bookcount")) #学生借阅图书数量
#将借书数量插入数据库,代码略
if _name_ = '_main_':
app. run(host = '192.168.0.55', port =5000)
(2)系统搭建完成后,发现LED大屏幕上有学生进出时间的数据,但没有借阅图书的数据,可能的原因是__________________(多选,填字母)。
A. 无线网络信号不稳定 B. 智能终端2与书籍扫描器连接故障
C. IoT模块1故障 D. 访问"/bc"路由时,传递bookcount参数出错
(3)图书馆举办积分兑换活动,对每天积分最多的前十名学生进行奖励。将系统中7月份的数据导出为“data.xlsx”,格式如图b所示。实现该功能的部分Python程序如下,请在划线处填入合适的代码。
import pandas as pd
df = pd. read excel("data. xlsx")
for i in df. index:
df. at[i, "date"] = df. at[i, "date"]%100 #取date的后2位
df["score"] = df["end"]-df["start"]+df["book"]*20 #计算学生积分
for i in range(1, 32): #统计每天前十名
________________
________________
________________
#输出结果,代码略
程序中①②③处可选的代码有:
A. dft=df[date == i]
B. dft=df[df["date"] == i]
C. dfg = dft. groupby("stu", as_index = False)["score"].sum()
D. dfg = dft. groupby("stu", as_index = False)["score"].count()
E. dfg = dft. sort_values("score", ascending=False).head(10)
F. dfg = dfg. sort_values("score", ascending=False).head(10)
14. 学生刷校园一卡通核验身份,访问图书馆智能书架系统。传感器每隔1秒读取一次当前被借阅书籍的book_id,根据检测结果发送相关信息给管理端,规则为:若检测到book_id等于-1,表示书籍未被取走,则发送“空状态”(send = -1);若连续3次检测到book_id不等于-1,则发送该书籍的book_id。
(1)学生使用校园卡进行身份识别时用到的是________________(单选,填字母:A.射频识别技术/B.人体红外技术/C.人脸识别技术/D.蓝牙技术),其中该校园卡属于________________(单选,填字母:A.有源标签/B.无源标签)。
(2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。
book_id = -1 ; send = -1 ; last = -1
cnt = 0; k = 3
while True:
# 读取传感器数据book_id,代码略
if book_id == -1:
send = -1
print("发送", send)
cnt, last = 0,-1
else:
if book_id ! = last:
________________
else:
cnt += 1
if _______________:
send = book_id
print("发送",send)
cnt = 0
________________
15. 某文具中转仓接收批量到货文具,所有文具规格相同,每件分配唯一正整数货号,文具到货先后顺序与货号大小无关。收到调拨需求时,执行如下操作:
①读取货号数据data,根据调拨需求reqs,用满足调拨时间的数据生成以区间起始货号升序排列的链表1st。
②根据调拨指定的目标货号进行区间检索。
③若未找到符合条件的区间,则取消本次调拨。
④若检索到该货号在区间内,且区间长度不小于调拨数量x,则调出从该区间起始货号开始的x件连续文具;否则取消本次调拨。
请回答下列问题:
(1)若按照如下表所示的到货数据,根据上述规则生成链表存储。若执行调拨需求[14:30, 519, 3],目标货号所在区间在完成调拨后剩余文具的起止货号是( )
到货时间
13:05
13:12
13:18
13:26
13:31
13:40
13:46
13:52
14:35
货号
521
517
515
520
512
513
514
519
522
A. 无剩余,区间删除 B. [522, 522]
C. [519, 522] D. [519, 521]
(2)定义search函数,功能是查找货号target在arr中的位置。列表arr以起始货号升序存储货号区间,每个区间记录起始货号与结束货号,请在划线处填入合适的代码。
def search(arr, target):
left =0
right=1en(arr)-1
while left <= right:
mid = (left + right) //2
if arr[mid][0] <= target <= arr[mid][1]:
return mid
elif ________:
left = mid +1
else:
right = mid -1
return -1
调用search函数,若arr数组长度为10,且查找目标货号不存在,while循环体的执行次数最多是________。
(3)处理需求信息。模拟上述过程的Python程序如下,请在划线处填入合适的代码。
def add goods(pid, lst):
"""
插入货号pid到链表1st,合并相邻区间
节点格式:[start, end, next index]
头节点:1st[0] = [-1, -1, next index]
"""
#代码略
def proc(data,reqs):
#处理调拨需求,返回成功调拨的区间列表
res = []
lst = [[-1,-1,-1]] #初始化仅包含头节点的链表
idx = 0
for i in range(len(reqs)):
cur_time = reqs[i][0]
need = reqs[i][1]
while idx < len(data) and data[idx][0] <= cur_time:
add_goods(data[idx][1], 1st) #根据新加入的货号更新链表
idx += 1
# 提取所有区间起止货号,生成有序数组start_arr
start_arr = []
p = 1st[0][2]
while p!=-1:
start_arr. append([1st[p][0], 1st[p][1]])
p = 1st[p][2]
print("start_arr=", start_arr)
pos = ________________
if pos ==- 1:
#无对应区间,取消本次调拨,代码略
else:
p=lst[0][2]
for i in range(pos): #查找pos在lst中的位置
prep = p
p = 1st[p][2]
start = 1st[p][0]
end = 1st[p][1]
seg_len = end - start + 1
if ___________________:
res. append([start, start + need - 1])
lst[p][0] += need
if lst[p][0] > lst[p][1]:
________________
else:
#区间长度不够,取消本次调拨,代码略
print("lst=", 1st)
return res
#主程序
data = [[13.05, 521], [13.12, 517], [13.18, 515], [13.26, 520], [13.31, 512], [13.40, 513], [13.46, 514], [13.52, 519], [14.35, 522]]
req s = [[14.30,2,513]] #调拨需求:[时间,数量,货号]
result = proc(data , reqs)
print ("成功调拨的区间:", result)
start_arr = [[512, 515], [517, 517], [519, 521]]
1st= [[-1, -1, 4], [519, 521, -1], [517, 517, 1], [515, 515, 2], [514, 515, 2]]
成功调拨的区间:[[512, 513]]
程序运行示例
第1页/共1页
学科网(北京)股份有限公司
$
2026年高三基础测试
技术试题卷
(2026.9)
本试题卷分信息技术与通用技术两部分。满分100分,考试时间90分钟。
第一部分 信息技术(共50分)
一、单选题(本题共12小题,每小题2分,共24分)
阅读下列材料,完成下面小题。
某校操场安装了校园阳光跑系统。该系统通过配备多组高清摄像头,支持人脸识别,操场LED大屏实时显示学生的跑步距离、速度、排行榜等信息。系统服务器对运动数据进行汇总、存储与评估,并生成相应报表。学生可通过手机APP查看个人运动数据,班主任可查看本班级全体学生的数据。
1. 关于该系统中数据的说法,正确的是( )
A. 生成运动数据报表的过程中不会产生新的数据
B. 服务器中的所有数据都是以十六进制方式存储的
C. 学生通过APP查看到的运动曲线图片属于结构化数据
D. 摄像头采集人脸图像时,将模拟信号转换为计算机可处理的数字信号
2. 下列措施中能有效提升系统数据安全的是( )
A. 安装防火墙并定期查杀病毒
B. 对获取的图片数据采用JPEG格式存储
C. 向学生发送每日运动是否达标的提醒信息
D. 对学生和班主任设置相同的数据访问控制权限
3. 系统有时会出现人脸识别不匹配的情形,下列原因分析中不可能的是( )
A. 系统的人脸识别算法存在缺陷
B. 学生的手机上没有安装该系统的APP
C. 环境光线的强度影响了拍摄画面的清晰度
D. 学生的人脸数据没有录入到该系统的服务器
【答案】1. D 2. A 3. B
【解析】
【1题详解】
本题考查数字系统的数据处理相关知识点。生成运动数据报表的过程中会对原始运动数据进行加工计算,会产生新的统计类数据,A选项错误;服务器中的数据是以二进制形式存储,并非十六进制,B选项错误;运动曲线图片属于非结构化数据,C选项错误;摄像头采集人脸图像时,会将现实场景中的模拟光信号转换为计算机可识别处理的数字信号,D选项正确。故答案为:D。
【2题详解】
本题考查系统数据安全防护的相关知识点。安装防火墙并定期查杀病毒可以抵御网络攻击、清除恶意程序,有效提升系统数据安全,A选项符合要求;JPEG是图片的存储格式,仅能压缩图片体积,无法提升数据安全性,B选项错误;发送运动达标提醒属于系统的功能服务,和数据安全防护无关,C选项错误;学生和班主任的角色不同,所需访问的数据范围不同,设置相同权限会导致数据越权泄露,反而降低数据安全性,D选项错误。故答案为:A。
【3题详解】
本题考查人脸识别系统的工作逻辑相关知识点。人脸识别算法存在缺陷、环境光线过暗/过亮影响拍摄清晰度、人脸数据未提前录入服务器,都有可能导致人脸识别不匹配;人脸识别是操场端的摄像头直接完成识别校验,和学生手机是否安装该系统APP没有关联,该情形不可能造成人脸识别不匹配。故答案为:B。
阅读下列材料,完成下面小题。
某市搭建了无人机空中巡检系统,为城市管理与应急保障等领域提供服务。无人机巡检时根据预先设定的航线,通过机载传感器感知自身状态和外部环境,机载无线通信模块实时回传高清视频至巡检系统。系统借助AI模型对数据进行处理,检测到异常情况时,立即在地图上高亮标示并弹窗预警,同时将信息推送给相关工作人员处理。
4. 下列关于该系统的组成与功能的说法,正确的是( )
A. 系统维护人员不属于该系统中的用户
B. 异常信息推送给管理员属于数据的输出功能
C. 异常情况在地图上高亮标示属于人工智能技术的应用
D. 传感器、无线通信模块和AI模型都属于该系统的硬件设备
5. 无人机将高清视频回传至巡检系统的过程中,必须用到的技术是( )
A. 数据加密技术 B. 人工智能技术 C. 射频识别技术 D. 无线通信技术
6. 该巡检系统覆盖4个巡检区域,每个区域部署20架无人机,每架无人机搭载6种传感器。现用二进制对这些传感器进行统一编码,二进制编码中前几位表示区域编号,中间几位表示无人机编号,其余位表示传感器编号,则所需的二进制位数最少是( )
A. 8 B. 9 C. 10 D. 11
【答案】4. B 5. D 6. C
【解析】
【4题详解】
本题考查信息系统的组成与功能相关知识点。选项A错误,系统维护人员是该信息系统的重要用户类型之一,负责系统的运维保障工作;选项B正确,将处理后的异常信息推送给工作人员,是信息系统将加工处理后的数据传递给用户的过程,属于数据的输出功能;选项C错误,在地图上高亮标示异常属于可视化展示操作,不属于AI模型的人工智能应用范畴,AI的应用是前置的异常检测环节;选项D错误,AI模型是软件层面的算法程序,不属于硬件设备。故答案为:B。
【5题详解】
本题考查信息传输的相关技术应用知识点。无人机通过机载无线通信模块回传高清视频,核心依赖无线通信技术实现数据的远距离传输;数据加密是可选的安全增强手段、人工智能技术用于后续的数据处理、射频识别技术用于近距离的标识识别,三者都不是该回传过程必须用到的技术。故答案为:D。
【6题详解】
本题考查二进制编码的最小位数计算知识点。首先分别计算各部分所需最少二进制位数:①4个巡检区域,2位二进制可表示00-11共4种状态,区域编号最少需2位;②每个区域20架无人机,4位二进制最多表示16种状态,5位二进制可表示00000-11111共32种状态,无人机编号最少需5位;③每架无人机搭载6种传感器,2位二进制最多表示4种状态,3位二进制可表示000-111共8种状态,传感器编号最少需3位。三者相加2+5+3=10位,即所需最少二进制位数为10。故答案为:C。
7. 某栈初始为空,经过一系列入栈、出栈操作后,栈又为空。若元素入栈的顺序为a,b,c,d,则所有可能的出栈序列中,以b开头的序列个数是( )
A. 3 B. 4 C. 5 D. 6
【答案】C
【解析】
【详解】本题考查栈的出栈序列合法性判断。入栈顺序:a,b,c,d,要求出栈第一个是 b。 要让 b 第一个出栈。列出所有可能的序列:
b,a,c,d:b 出 → a 出 → c 入 c 出 → d 入 d 出
b,a,d,c:b 出 → a 出 → c 入 d 入 d 出 → c 出
b,c,a,d:b 出 → c 入 c 出 → a 出 → d 入 d 出
b,c,d,a:b 出 → c 入 c 出 → d 入 d 出 → a 出
b,d,a,c: 不合法!c 还没入栈,不能先 d 入栈。
b,d,c,a:b 出 → c 入 d 入 d 出 → c 出 → a 出 。一共有5种合法。故本题应选C。
8. 某二叉树有a,b,c,d四个节点,若后序遍历序列为dbca,则中序遍历结果不可能的是( )
A. dabc B. dcab C. dbac D. adbc
【答案】B
【解析】
【详解】本题考查二叉树的遍历特性。首先根据后序遍历序列dbca的规则,后序遍历顺序是左子树-右子树-根节点,可确定整棵二叉树的根节点是a。接下来逐一验证选项:第一个选项dabc,根a的左子树包含d、b、c三个节点,结合后序序列dbca可构造出符合该中序的二叉树,是可能的。第二个选项dcab,若中序为dcab,根a的左子树包含d、c两个节点,右子树为空,但后序遍历中b会出现在c之后,和给定的后序序列dbca矛盾,无法构造出符合条件的二叉树,是不可能的。第三个选项dbac,根a的左子树包含d、b、c三个节点,可构造出符合要求的二叉树,是可能的。第四个选项adbc,根a的左子树为空,右子树包含d、b、c三个节点,结合后序序列可构造出合法二叉树,是可能的。故答案为:B
9. 有如下Python程序段:
s1 = "AB"; s2 = "AACBD"
i = 0; s3 = ""
for j in range(len(s2)):
if i >= len(s1):
break
if s1[i] == s2[j]:
i += 1
else:
s3 += s2[j]
print(s3)
运行该程序段后,变量 s3 的值是( )
A. "ACD" B. "CD" C. "AC" D. "AACBD"
【答案】C
【解析】
【详解】本题考查Python字符串遍历与循环分支逻辑的执行过程。初始时s1为"AB",s2为"AACBD",i=0,s3为空字符串。
j=0时,s1[0]是"A",s2[0]是"A",二者相等,i自增为1,不执行s3拼接操作。
j=1时,s1[1]是"B",s2[1]是"A",二者不相等,将s2[1]的"A"拼接到s3,此时s3为"A"。
j=2时,s1[1]是"B",s2[2]是"C",二者不相等,将s2[2]的"C"拼接到s3,此时s3为"AC"。
j=3时,s1[1]是"B",s2[3]是"B",二者相等,i自增为2,此时i等于s1的长度2,触发break语句直接跳出循环,后续j=4的遍历不会执行。
最终s3的值为"AC",对应第三个选项。故答案为:C。
10. 定义如下函数:
def f(a,b):
if a == b:
return b
if a > b:
return f(a-b, b)
else:
return f(a, b-a)
执行语句k=f(24, 14)后,k的值为( )
A. 2 B. 4 C. 6 D. 14
【答案】A
【解析】
【详解】本题考查递归函数的执行逻辑与辗转相减法(更相减损术)的原理。该自定义函数f(a,b)是基于辗转相减法实现的求两个数最大公约数的函数,执行f(24,14)的递归过程如下:
初始调用f(24,14),24>14,递归调用f(24-14,14)=f(10,14)
进入f(10,14),10<14,递归调用f(10,14-10)=f(10,4)
进入f(10,4),10>4,递归调用f(10-4,4)=f(6,4)
进入f(6,4),6>4,递归调用f(6-4,4)=f(2,4)
进入f(2,4),2<4,递归调用f(2,4-2)=f(2,2)
进入f(2,2),满足a==b的终止条件,返回2。 故答案为:A。
11. 对数组a执行排序算法:每一轮处理当前未排序区间,采用双向遍历方式。先从左向右扫描,将区间内最大值逐步移动至区间右端;再从右向左扫描,将区间内最小值逐步移动至区间左端。重复上述过程,直至整个数组按升序排列。实现该功能的部分Python程序段如下:
m1 = 0; m2 = len(a)-1
while m1 < m2:
for i in range(m1, m2):
if ① :
a[i], a[i + 1] = a[i + 1], a[i]
m2 - =1
for i in range(m2, ② , -1):
if a[i] < a[i - 1]:
a[i], a[i - 1] = a[i - 1], a[i]
m1 += 1
则划线处① ② 应填入的代码是( )
A. ①a[i] > a[i + 1] ②m1 B. ①a[i] > a[i + 1] ②m1+1
C. ①a[i] < a[i + 1] ②m1 D. ①a[i] < a[i + 1] ②m1+1
【答案】A
【解析】
【详解】本题考查双向冒泡排序算法。①处从左向右扫描将最大值移到右端,应比较相邻元素,若左边大于右边则交换,故填a[i] > a[i + 1];②处从右向左扫描将最小值移到左端,范围应从m2递减到m1+1,故range的终止参数为m1。因此,本题选择A选项。
12. 有如下Python程序段:
from random import randint
st = [randint(1, 10) for i in range(10)]
i = 0; t = 0
while i < len(st):
f = st[i]; g = st[i+1]
if f >= t:
n = i
t = g
i += 2
执行后n的值为4,则下列表达式的值一定为True的是( )
① st[4] >= st[3] ② st[5] > st[6] ③ st[5] < st[7]
A. ①②③ B. ①③ C. ②③ D. ①②
【答案】D
【解析】
【详解】本题考查Python循环逻辑与列表遍历的执行过程分析。st是长度为10的列表,下标范围0到9,循环中i每次自增2,依次取i=0,2,4,6,8,每次循环内f取st[i],g取st[i+1],判断f是否大于等于当前t,满足则更新n为i,之后将t赋值为g,再i加2。已知最终n的值为4,说明:i=0时,f=st[0],初始t=0,st[0]必然大于等于0,此时n被赋值为0,之后t更新为st[1];i=2时,f=st[2],此时判断st[2]是否大于等于t也就是st[1],如果满足n会被更新为2,但最终n是4,说明st[2] < st[1],n不会被更新,之后t更新为st[3];i=4时,f=st[4],此时判断st[4] >= t也就是st[3],条件成立,n被更新为4,之后t更新为st[5];i=6时,f=st[6],此时如果st[6] >= t也就是st[5],n会被更新为6,但最终n是4,说明st[6] < st[5];i=8时,f=st[8],此时如果st[8] >= t也就是st[5],n会被更新为8,但最终n是4,说明st[8] < st[5]。接下来逐一验证三个表达式:①st[4] >= st[3],由i=4时的判断条件成立可知该式必然为真;②st[5] > st[6],由i=6时st[6] < st[5]可知该式必然为真;③st[5] < st[7],程序中从未访问过st[7],st[7]的取值完全随机,无法保证该式一定成立。因此一定为True的是①②。故答案为:D。
二、综合题(本题共3小题,其中第13题10分,第14题7分,第15题9分,共26分)
13. 某校搭建了智慧图书馆管理系统。系统架构如图a所示,请回答下列问题:
(1)基于Flask框架编写服务器端的程序,部分代码如下。向视图函数time传递的参数start为480,end为660时,应访问的URL是http://________? start=480&end=660.
#导入flask等相关库,代码略
app = Flask(__name__n)
@ app. route("/setime")
def time():
start = int(request. args. get("start")) #学生进入图书馆时间
end = int(request. args. get("end")) #学生离开图书馆时间
#将开始学习时间和结束学习时间插入数据库,代码略
@ app. route("/bc")
def number():
bookcount = int(request. args. get(" bookcount")) #学生借阅图书数量
#将借书数量插入数据库,代码略
if _name_ = '_main_':
app. run(host = '192.168.0.55', port =5000)
(2)系统搭建完成后,发现LED大屏幕上有学生进出时间的数据,但没有借阅图书的数据,可能的原因是__________________(多选,填字母)。
A. 无线网络信号不稳定 B. 智能终端2与书籍扫描器连接故障
C. IoT模块1故障 D. 访问"/bc"路由时,传递bookcount参数出错
(3)图书馆举办积分兑换活动,对每天积分最多的前十名学生进行奖励。将系统中7月份的数据导出为“data.xlsx”,格式如图b所示。实现该功能的部分Python程序如下,请在划线处填入合适的代码。
import pandas as pd
df = pd. read excel("data. xlsx")
for i in df. index:
df. at[i, "date"] = df. at[i, "date"]%100 #取date的后2位
df["score"] = df["end"]-df["start"]+df["book"]*20 #计算学生积分
for i in range(1, 32): #统计每天前十名
________________
________________
________________
#输出结果,代码略
程序中①②③处可选的代码有:
A. dft=df[date == i]
B. dft=df[df["date"] == i]
C. dfg = dft. groupby("stu", as_index = False)["score"].sum()
D. dfg = dft. groupby("stu", as_index = False)["score"].count()
E. dfg = dft. sort_values("score", ascending=False).head(10)
F. dfg = dfg. sort_values("score", ascending=False).head(10)
【答案】(1)192. 168. 0.55: 5000/setime (2)BD
(3) ①. B ②. C ③. F
【解析】
【详解】本题考查Flask路由与服务配置、物联网系统故障排查、pandas数据处理的综合应用。
(1)Flask服务配置中host为192.168.0.55,port为5000,time视图函数绑定的路由是/setime,因此拼接得到URL的主机端口和路径部分为192.168.0.55:5000/setime。
(2)已知进出时间数据可正常传输说明无线网络、IoT模块1均工作正常,排除A、C选项;智能终端2与书籍扫描器连接故障会导致借阅数据无法采集,访问"/bc"路由时传递bookcount参数出错会导致借阅数据无法正常存入系统,因此B、D是可能的故障原因。
(3)首先筛选出当日i的所有数据,正确写法是dft=df[df["date"] == i]对应选项B;接着按学生stu分组,对同一名学生当日的积分求和,使用groupby的sum方法对应选项C;最后将分组求和后的总积分按降序排序,取前10名得到当日积分最高的十名学生,对应选项F。
14. 学生刷校园一卡通核验身份,访问图书馆智能书架系统。传感器每隔1秒读取一次当前被借阅书籍的book_id,根据检测结果发送相关信息给管理端,规则为:若检测到book_id等于-1,表示书籍未被取走,则发送“空状态”(send = -1);若连续3次检测到book_id不等于-1,则发送该书籍的book_id。
(1)学生使用校园卡进行身份识别时用到的是________________(单选,填字母:A.射频识别技术/B.人体红外技术/C.人脸识别技术/D.蓝牙技术),其中该校园卡属于________________(单选,填字母:A.有源标签/B.无源标签)。
(2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。
book_id = -1 ; send = -1 ; last = -1
cnt = 0; k = 3
while True:
# 读取传感器数据book_id,代码略
if book_id == -1:
send = -1
print("发送", send)
cnt, last = 0,-1
else:
if book_id ! = last:
________________
else:
cnt += 1
if _______________:
send = book_id
print("发送",send)
cnt = 0
________________
【答案】(1) ①. A ②. B
(2) ①. cnt = 1 ②. cnt == k或cnt >= 3 ③. last = book_id
【解析】
【详解】本题考查循环语句。
(1)学生使用校园卡进行身份识别时用到的是射频识别技术,校园卡属于无源标签。因此第一空选A,第二空选B。
(2)①处:当检测到的book_id与上一次不同时,需要重置连续计数为1,并记录当前book_id。但根据程序结构,最后有③处统一更新last,所以①处只需将cnt重置为1,即cnt = 1。②处:当连续检测到同一book_id的次数达到k(3次)时,发送该book_id。因此条件为cnt == k或cnt >= 3。③处:每次处理完非-1的book_id后,都需要将last更新为当前book_id,以便下一次比较,因此填last = book_id。
15. 某文具中转仓接收批量到货文具,所有文具规格相同,每件分配唯一正整数货号,文具到货先后顺序与货号大小无关。收到调拨需求时,执行如下操作:
①读取货号数据data,根据调拨需求reqs,用满足调拨时间的数据生成以区间起始货号升序排列的链表1st。
②根据调拨指定的目标货号进行区间检索。
③若未找到符合条件的区间,则取消本次调拨。
④若检索到该货号在区间内,且区间长度不小于调拨数量x,则调出从该区间起始货号开始的x件连续文具;否则取消本次调拨。
请回答下列问题:
(1)若按照如下表所示的到货数据,根据上述规则生成链表存储。若执行调拨需求[14:30, 519, 3],目标货号所在区间在完成调拨后剩余文具的起止货号是( )
到货时间
13:05
13:12
13:18
13:26
13:31
13:40
13:46
13:52
14:35
货号
521
517
515
520
512
513
514
519
522
A. 无剩余,区间删除 B. [522, 522]
C. [519, 522] D. [519, 521]
(2)定义search函数,功能是查找货号target在arr中的位置。列表arr以起始货号升序存储货号区间,每个区间记录起始货号与结束货号,请在划线处填入合适的代码。
def search(arr, target):
left =0
right=1en(arr)-1
while left <= right:
mid = (left + right) //2
if arr[mid][0] <= target <= arr[mid][1]:
return mid
elif ________:
left = mid +1
else:
right = mid -1
return -1
调用search函数,若arr数组长度为10,且查找目标货号不存在,while循环体的执行次数最多是________。
(3)处理需求信息。模拟上述过程的Python程序如下,请在划线处填入合适的代码。
def add goods(pid, lst):
"""
插入货号pid到链表1st,合并相邻区间
节点格式:[start, end, next index]
头节点:1st[0] = [-1, -1, next index]
"""
#代码略
def proc(data,reqs):
#处理调拨需求,返回成功调拨的区间列表
res = []
lst = [[-1,-1,-1]] #初始化仅包含头节点的链表
idx = 0
for i in range(len(reqs)):
cur_time = reqs[i][0]
need = reqs[i][1]
while idx < len(data) and data[idx][0] <= cur_time:
add_goods(data[idx][1], 1st) #根据新加入的货号更新链表
idx += 1
# 提取所有区间起止货号,生成有序数组start_arr
start_arr = []
p = 1st[0][2]
while p!=-1:
start_arr. append([1st[p][0], 1st[p][1]])
p = 1st[p][2]
print("start_arr=", start_arr)
pos = ________________
if pos ==- 1:
#无对应区间,取消本次调拨,代码略
else:
p=lst[0][2]
for i in range(pos): #查找pos在lst中的位置
prep = p
p = 1st[p][2]
start = 1st[p][0]
end = 1st[p][1]
seg_len = end - start + 1
if ___________________:
res. append([start, start + need - 1])
lst[p][0] += need
if lst[p][0] > lst[p][1]:
________________
else:
#区间长度不够,取消本次调拨,代码略
print("lst=", 1st)
return res
#主程序
data = [[13.05, 521], [13.12, 517], [13.18, 515], [13.26, 520], [13.31, 512], [13.40, 513], [13.46, 514], [13.52, 519], [14.35, 522]]
req s = [[14.30,2,513]] #调拨需求:[时间,数量,货号]
result = proc(data , reqs)
print ("成功调拨的区间:", result)
start_arr = [[512, 515], [517, 517], [519, 521]]
1st= [[-1, -1, 4], [519, 521, -1], [517, 517, 1], [515, 515, 2], [514, 515, 2]]
成功调拨的区间:[[512, 513]]
程序运行示例
【答案】(1)A (2) ①. arr[mid][1] < target ②. 4
(3) ①. search(start_arr, reqs[i][2]) ②. seg_len >= need或end - start + 1 >= need ③. 1st[prep][2] = 1st[p][2]
【解析】
【详解】本题考查区间合并与链表操作、二分查找算法、业务逻辑的Python实现。
(1)调拨需求的时间是14:30,仅14:35到货的522不满足时间要求,符合条件的到货货号生成的区间为[512,515]、[517,517]、[519,521],目标货号519所在区间是[519,521],区间长度为3,调拨数量为3,调出从区间起始开始的3件即519、520、521,调拨后区间无剩余,区间删除。故选A。
(2)search函数是基于区间升序的二分查找,当目标货号大于当前mid区间的结束值时,说明目标只能在右半区间,因此第一个空填arr[mid][1] < target;数组长度为10时,二分查找不存在的元素最多执行4次循环体即可覆盖所有查找分支。
(3)①pos是查找目标货号的区间位置,因此调用search(start_arr, reqs[i][2])获取返回值;②判断是否满足调拨条件需要区间长度不小于调拨数量,因此填seg_len >= need或end - start + 1 >= need;③当修改区间起始值后起始值大于结束值,说明该区间已无剩余货号,需要将该节点从链表中删除,即修改前驱节点的next指针指向当前节点的后继节点,填lst[prep][2] = lst[p][2]。
第1页/共1页
学科网(北京)股份有限公司
$