绝密★考试结束前
2022 学年第二学期浙江精诚联盟适应性联考
高三技术学科 试题
本试卷分两部分,第一部分信息技术,第二部分通用技术。满分 100分,考试时间90分钟。
第一部分 信息技术(共 50分)
一、选择题(本大题共 12 小题,每小题 2 分,共 24 分。每小题列出的四个备选项中只有一个是符
合题目要求的,不选、多选、错选均不得分)
阅读下列材料,回答 1至 2题。
微软亚洲研究院视觉计算组曾在 ImageNet 计算机视觉识别挑战赛中取得了 96.43%的图像识别
正确率而一举夺冠。这得益于它前期对海量已分好类的图像大数据中所蕴含的特征模式的深度学习。
该深度学习模型如图所示。
1.结合材料,下列关于信息、知识等的说法正确的是( )
A.图中狗和猫等分类图像都是信息
B.96.43%是数据,即使脱离材料中给出的语境,我们可以获知其中的信息
C.人类知道左侧照片中是猫和狗,这是知识的体现
D.即使大部分输入数据的分类、特征信息不准确,深度学习结果也不会有偏差
2.结合材料,下列关于人工智能的说法正确的是( )
A.该技术用已知的数据定义来推导出其他图像数据定义,是符号主义实现方法
B.增大该系统前期输入的训练量,可以完全消除该系统图像识别的错误率
C.该技术需要人工参与输入已分类的图像信息,属于混合增强型人工智能
D.人工智能改善了人类生活,促进了经济发展,也带来了社会问题
3.下列四个选项中所描述的数从数值上比较,最大的是( )
A.5位十六进制数能表示的最大值
B.20位二进制能表示的不同数的个数
C.存储 10000个 ASCII码所需字节数
D.存储图像大小为 100×100 像素的黑白两色位图所需的字节数
4.随着信息技术的发展,信息安全保护也越来越重要,采取下列措施无助于信息安全的是( )
A.数据可视化 B.异地容灾 C.USB Key认证 D.非对称密码
5.下列关于信息系统的说法,正确的是( )
A.信息系统的硬件包括看得见、摸得着的设备和可以操作的应用程序
高三信息技术学科 第1页 共 8 页
B.移动终端的存储器是整个设备的控制中枢系统和逻辑控制中心
C.信息系统中的传感技术负责对外部世界的控制
D.搭建信息系统主要包括硬件搭建和软件模块选择或编写两方面
6.关于网络组成与构建,下列说法不.正.确.的是( )
A.为主机动态分配 IP 地址的服务器是 DHCP 服务器
B.局域网要接入互联网,需要调制解调器(Modem)和路由器(Router)等设备
C.网络由传输介质、网络互联设备、网络软件和网络协议组成
D.访问网站 http://www.,必须通过三层协议:网际协议、传输控制协议和应用程序协议
7.某算法流程图如下图所示,已知 randint(0,10)函数可以产生闭区间[0,10]内的随机整数,执行
完该流程图后,输出结果可能是( )
第 7题图
A.6 6 6 6 6 B.10 12 16 18 22 C.0 2 4 5 8 D.12 8 10 16 20
8.有如下 Python程序段:
a = b = ""
k = 0
s = input().strip()
for i in range(len(s)):
if '0' <= s[i] <= '9':
k += 1
else:
b = s[i-k:i]
if a < b:
a = b
高三信息技术学科 第2页 共 8 页
k = 0
print(a)
运行后若输入“3.803.93.520.888”(不包括引号),则输出是( )
A.803 B.93 C.520 D.888
9.判断某序列 是否是入栈序列 =[1,2,3,4,5]的出栈序列,程序如下:
a = [1, 2, 3, 4, 5]
b = list(map(int, input().split())) 输入示例:
stack = [] 2 3 5 4 1
i = j = 0 输出示例:
while i < len(a): [2,3,5,4,1]是[1,2,3,4,5]的出栈序列
stack.append( ① )
i += 1
while len(stack) > 0 and ② :
stack.pop()
j += 1
if len(stack) == 0 and i == j == len(a):
print(b, '是', a, '的出栈序列')
else:
print(b, '不是', a, '的出栈序列')
划线处应填写的语句是( )
A.① a[i] ② stack[-1] == a[j] B.① a[i] ② stack[-1] == b[j]
C.① b[i] ② stack[-1] == b[i] D.① b[i] ② stack[-1] == a[j]
10.某表达式树如下图所示,下列说法错.误.的是( )
A.该表达式树是一棵二叉树,树的度是 2,高度是 5
B.该树的叶子节点数比度为 2 的节点数多 1 个
C.若采用完全二叉树数组从 0 号位开始存储,则节点 存储在 6号位
D.该表达式树的前序遍历序列是× +/
11.有如下 Python程序段,运行后程序的输出结果是( )
a = [[3,1], [2,2], [3,3], [3,4], [17,5], [2,6], [3,-1]]
p = head = 0
while p != -1: 第10题图
q = p
while q != -1:
t = q
q = a[q][1]
if q != -1 and a[q][0] == a[p][0]:
a[t][1] = a[q][1]
q = t
p = a[p][1]
p = head
while p != -1:
高三信息技术学科 第3页 共 8 页
print(a[p][0], end=' ')
p = a[p][1]
A.3 2 17 B.3 2 17 2 C.3 2 17 2 3 D.17
12.有如下 Python程序段:
q = [1, 2, 3, 4, 5, 6, 7, 8, 9]
f, r = 0, 8
n = int(input())
while r < n:
cur = q[f]
f = f + 1
m = cur % 10
if m == 0:
q.append(cur * 10 + m)
q.append(cur * 10 + m + 1)
r += 2
elif m == 9:
q.append(cur * 10 + m - 1)
q.append(cur * 10 + m)
r += 2
else:
q.append(cur * 10 + m - 1)
q.append(cur * 10 + m)
q.append(cur * 10 + m + 1)
r += 3
对于该程序,下列说法正确的是( )
A.q[12]的值是 20
B.若程序输入 的值等于 21,则列表 q中的元素个数是 22个
C.对列表任一元素 q[i](9 ≤ ≤ ),其个、十、百、千……等相邻位上的数值相差都不超过 1
D.q中元素值递增,且任意相邻两个元素 q[i]和 q[i+1](0 ≤ < ),它们数值相差不会超过 1
二、非选择题(本大共 3小题,其中第 13小题 8分,第 14小题 9分,第 15小题 9分,共 26分)
13.小范参加“科学玩家”绿色植物生态缸制作比赛,为此他搭建了 “生态缸温度控制系统”。系
统可以采集生态缸的气温,通过 Wi-Fi传输到服务器并存储到数据库,当气温过高或过低时通过执
行器控制温控设备为生态缸维持合适的气温。请回答以下问题。
第13题图
高三信息技术学科 第4页 共 8 页
(1)系统架构简图如上所示,图中①处连接的设备是 (选填:服务器 / 智能终端 /
路由器 / 防火墙)。
(2)生态缸采集并发送气温数据的部分程序代码如下所示:
from microbit import *; import Obloq
# uart串口配置和初始化,并用 Obloq连接 Wi-Fi,准备发送数据,代码略
while True:
value = pin0.read_analog() # 获取 1号温度传感器数据,注意这是模拟值
t = round(value * 330 / 1024, 1) # 将模拟值转换成摄氏温度值
errno, resp = Obloq.get( ② , 10000) # 向服务器发送数据
# 根据服务器反馈信息控制执行器进行温控,代码略
sleep(1000 * 5)
若某一时刻传感器获取到的温度值是 27℃,它向服务器发送数据时使用的 URL是
http://192.168.113.5/data id=1&v=27,请将划线处②的语句补充完整。
(3)服务器端采用 Flask框架搭建,其部分程序如下:
import sqlite3; from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/')
def index():
# 连接并读取数据库,获取传感器编号为 1的所有气温值,用变量 result 保存,代码略
tmp = result[-1][2] # 获取最后一条记录中的气温值,保存在变量 tmp中
return tmp
@app.route('/data', methods=['GET', 'POST'])
def add():
# 获取智能终端传输的传感器编号 id和气温 v的值,并插入到相应数据表中,
# 最后根据数据库中存储的气温临界值向智能终端发送反馈信息,代码略
if __name__ == '__main__':
app.run(host="192.168.113.5", port="80")
在 add()视图函数中,需要将数据插入到数据表中,其操作语句如下:
sql = "Insert Into sensorlog (sensorid, sensorvalue) values ('%s', '%s')" % (id, v)
① cur = db.cursor() ② mit()
③ db = sqlite3.connect("temp.db") ④ cur.execute(sql)
cur.close(); db.close()
那么其中①~④条语句正确的顺序是: 。
(4)在上述程序的 index()视图函数中,加框处语句试图用 view.html模板渲染网页内容,并将 tmp
的值传递给网页模板变量 temperature,但语句有误,正确的应该是 (单选,填字母)
A.return temperature
B.return render_template('view.html', temperature)
C.return render_template('view.html', tmp = temperature)
D.return render_template('view.html', temperature = tmp)
14.小林收集了各地市各年份检测的 PM2.5浓度值保存于 Excel文件“PM2.5.xlsx”中,部分数据
如图 a所示。小林使用 Python进行数据分析,请回答以下问题。
高三信息技术学科 第5页 共 8 页
第 14 题 图 a 第 14 题 图 b
(1)小林先将同一个地区的数据输出到各自独立的 Excel文件中,部分结果如图 b所示,实现程序
如下所示:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel("PM2.5.xlsx")
# cities保存所有地区名称,这里仅演示部分数据
cities = ["安吉县", "淳安县", "慈溪市", "杭州市", "湖州市"]
for city in cities:
dfc = ①
dfc.to_excel(city + ".xlsx", index=False) # 输出文件结果示例如图 b所示
那么划线部分语句可以是 (注:全部选对的得 2分,选对但不全的得 1分,不选或有选
错的得 0分)
A.df[df["地区名称"] == city] B.df[df["地区名称"]] == city
C.df[df.地区名称 == city] D.df[df."地区名称"]] == city
(2)对于图 a所示的原始数据,小林要进行数据整理:删除“地区编码”、“指标名称”、“计量单位”
等对后面统计无用的数据列,请将划线处②的语句补充完整。
df = pd.read_excel("PM2.5.xlsx")
# 删除“地区编码”、“指标名称”、“计量单位”数据列
df = df.drop(["指标名称", "地区编码", "计量单位"], axis= ② )
# 同一个地市取 PM2.5浓度最高的值
dfg = ③
# 按 PM2.5的值升序排序
dfg = dfg.sort_values("PM2.5", ascending=True)
# 输出排序后的最后五行结果
print(dfg.tail())
(3)对于整理后的数据,在同一个地市中取历次 PM2.5 浓度检测值最高的值,最后按 PM2.5升序排
序数据,输出结果如图 c所示,则第③空应填写的语句是 (单选,填字母)
A.df.groupby("PM2.5").max() B.df.groupby.地区名称.max()
C.df.sort_values("PM2.5").max() D.df.groupby("地区名称").max()
高三信息技术学科 第6页 共 8 页
PM2.5 年份 时间
地区名称
江山市 63 2022 1 月
德清县 63 2022 1 月
长兴县 63 2022 1 月
杭州市 63 2022 1 月
绍兴市 68 2022 1 月
第 14 题图 c 第 14 题图 d
(4)将排序后的数据分别取 PM2.5检测值最高和最低的五行数据合并成新的 DataFrame对象后绘制
成柱形图如图 d所示。请将程序补充完整。
df2 = pd.concat([dfg.head(5), dfg.tail(5)]) # 合并两个对象成为新的 DataFrame对象
plt.rcParams['font.sans-serif']=['KaiTi','SimHei','FangSong'] # 设置图表字体
plt.figure(figsize=(8,4))
plt.title("部分县市 PM2.5 浓度对比")
plt.xlabel("PM2.5浓度值")
plt.bar( ④ , df2["PM2.5"], color="orange")
for i in range(len(df2)):
x = df2.index[i]
y = ⑤
# text()方法可以绘制数据标签,语法:text(横坐标,纵坐标,显示内容)
plt.text(x, y, '%d' % y)
15.贪吃蛇在 × (1 ≤ ≤ 10)的方阵中游走,它可以往上下左右四个方向游走,当穿越方阵的边
界时还可以从该边界的对立面继续进入方阵。初始时你可以任意安排贪吃蛇的起点位置,并且选择
一个方向一直走 步。方阵中“.”表示空位置,数字表示可以吃的食物,每吃到一个数字时,这个
数字便会附着到贪吃蛇的尾部,同时方阵中该数字会消失。问:在某个时刻,贪吃蛇身上会不会出
现我们想要的某个整数;若有,会有多少个数会小于该整数。
例如,在右侧5 × 5的方阵中可以产生[1, 3, 4, 12, 21, 234, 243, 324, . . . . .
342, 423, 432]共 11个数。其中数“234”的产生过程可以是:选择第 4行 . . . . .
第 2 列为起点,第一步吃掉 2,接着往右走三步吃掉 3,再往右走一步穿越到 . 1 . . .
对面的 4,吃掉它成为“234”,共五步。其中“1234”或“123”等整数是 4 2 . . 3
不可能出现的。 . . . . .
请回答以下问题。
(1)输入方阵保存至数组 ,然后将贪吃蛇所有可能吃到的所有数字组合保存到数组 中,请补充完
该算法程序。
dx = [0, 1, 0, -1] # 模拟贪吃蛇往四个方向游走时行号变化的数组
dy = [1, 0, -1, 0] # 列号变化数组
n = int(input()) # 方阵的大小
a, b = [], []
for i in range(n):
s = input().strip().split() #方阵中的一行数据,“.”号和数字字符都以空格分隔
高三信息技术学科 第7页 共 8 页
a.append(s)
def calc(i, j, p):
x, y, res = i, j, 0
if '0' <= a[x][y] <= '9':
res = int(a[x][y])
for i in range(n-1):
x = ① # 产生新的行号
y = # 产生新的列号(与行号类似),代码略
if '0' <= a[x][y] <= '9':
res = res * 10 + int(a[x][y])
return res
for i in range(n):
for j in range(n):
for k in range(4):
num = ②
if num > 0:
b.append(num)
print(b) # 输出所有可能能产生的整数(可能会产生重复的整数)
(2)若数组 a= [['.', '1', '.'], ['.', '2', '3'], ['.', '.', '.']],上述程序处理完后 数
组中 (选填:存在 / 不存在)整数 2。
(3)对 数组中的所有整数进行升序排序,输入待查找的数据,输出小于等于该数字的数有多少个。
请补充完该算法程序。
bn = len(b) b = [1, 12, 23, 23, 23, 35, 35,
for i in range(bn-1): 146]
for j in range( ③ ): 输入输出示例:
if b[j] > b[j+1]: 请输入待查找的整数:23
b[j], b[j+1] = b[j+1], b[j] 小于等于 23 的数共有 5 个
key = int(input("请输入待查找的整数:"))
i, j = 0, bn-1 请输入待查找的整数:31
while i <= j: 小于等于 31 的数共有 5 个
m = (i + j) // 2
if ④ :
i = m + 1
else:
j = m - 1
print("小于等于", key, "的数共有", i, "个")
高三信息技术学科 第8页 共 8 页2022 学年第二学期浙江精诚联盟适应性联考
高三信息技术部分参考答案与解析
一、选择题(本大题共 12小题,每小题 2分,共 24分。每小题列出的四个备选项中只有一个是
符合题目要求的,不选、多选、错选均不得分)
1 2 3 4 5 6 7 8 9 10 11 12
C D B A D C A B B D A C
二、非选择题(本大题共 3小题,其中第 13小题 8分,第 14小题 9分,第 15 小题 9分,共 26
分)
13.(1)智能终端 (2分)
(2)"data id=1&v=" + str(t) (2分)
(3) ③①④② (2分)
(4)D (2分)
14.(1)AC (2分)
(2)1 (1分)
(3)D (2分)
(4)df2.index (2分)
df2["PM2.5"][i] (2分)
或 df2.at[df2.index[i],"PM2.5"]
15. (1)①(x + dx[p] + n) % n (2分)
或 (x + dx[p]) % n
或 其他等价表达式
② calc(i, j, k) (2分)
(2)不存在 (1分)
(3)③ bn-i-1 或 bn-2,i-1,-1 (2分)
④ b[m] <= key (2分)
高三信息技术 参考答案 第1页 共 6 页
高三信息技术答案解析部分
1. 答案:C
解析: 考查数据、信息与知识的含义与关系。选项 A:分类图像是信息的载体,图像所表示的
含义才是信息;选项 B:96.43%是数据,脱离语境将失去其意义;选项 D:基于大数据深度学习
的人工智能模型需要由准确的学习语料,个别由误差的数据虽不至于影响结果,但是大部分错误
数据必然影响结果。
2. 答案:D
解析:考查人工智能的实现方法和应用领域。材料中已告知该模型是通过“海量已分好类的图像
大数据中所蕴含的特征模式的深度学习”实现的人工智能,因此它是由数据驱动的联结主义人工
智能实现方法。已知的数据都是学习语料而不是推导的前提,选项 A有误;增大深度学习的训练
数据可以提高后期识别准确率,但无法完全效率错误,选项 B不正确;选项 C 中前期训练数据的
准备需要人工完成,但是其后期对图像的识别这一智能技术无需人工参与,不是混合增强型人工
智能。
3. 答案:B
解析:考查进位制、ASCII码、编码等知识。选项 A和选项 B,5位十六进制相当于 20位二进制
数,20 位二进制能表示的最大值是220 1 = (210)2 1 ≈ (1000)2 1,而 20 位二进制能表示
不同的数的个数是220 ≈ (1000)2,数值上比选项 A大。选项 C,一个 ASCII码占用 1个字节,10000
个 ASCII 码的占 10000 个字节,数值上比选项 A小。选项 D,100×100 像素的黑白两色位图,其
存储容量的字节数是100 × 100 × 1/8 = 1250,数值上比选项 C要小。因此答案为 B。
4. 答案:A
解析:考查数据、信息的安全与保护知识。数据安全包括磁盘阵列、数据备份、异地容灾等保护
存储介质的安全手段和数据加密、数据校验等提高数据本身安全手段。还可以通过身份认证技术
(包括用户名+口令、生物特征认证、USB Key 认证技术)和访问控制技术提高信息的安全。因
此,选项 B、C、D皆正确。选项 A中“数据可视化”是数据的另一种更易直观化的数据呈现方式,
几乎无助于信息安全。
5. 答案:D
解析:考查信息系统支撑技术及搭建知识。A项错误,信息系统硬件是看得见摸得着的设备,而
应用程序一般指软件。B项错误,和计算机一样,中央处理器是移动终端的控制中枢系统和逻辑
控制中心。C项错误,信息系统的传感技术负责将采集到的外部世界的数据输入到信息系统,而
控制技术负责对外部世界的控制。正确答案为 D。
6. 答案:C
解析:考查网络组成与构建相关知识。选项 C:网络由计算机系统、数据通信系统、网络软件和
网络协议组成。
7. 答案:A
解析:考查流程图的阅读与理解。分析流程图知: 数的范围是[0,20]内的偶数,选项 B出现了
22,选项 C出现奇数 5,都可以排除。当 是偶数时直接输出 的值,当 时奇数时 保存了前一个
的值,当前 的值比 的值大才有可能输出,否则 的值不变,且也不输出。因此奇数位是递增(或
非递减)的偶数,偶数位只需偶数即可。选项 D中 10的值比 12小,也不可能。
8. 答案:B
高三信息技术 参考答案 第2页 共 6 页
1. a = b = "" 解析:考查 Python 程序的理解。由循环中第 6 行代码
2. k = 0
知,变量 k 统计了数字字符的个数,因此第 8行变量 b
3. s = input().strip()
4. for i in range(len(s)): 保存了点号间的整个数字字符串,而后第 9行进行字符
5. if '0' <= s[i] <= '9': 串大小比较,将更大的字符串 b保存与变量 a中,因此
6. k += 1 本题是将字符串中最大的数字字符串输出。要注意的
7. else:
8. b = s[i-k:i] 是,数字字符串比较与整数比较有差别,因此最大的是
9. if a < b: 93。另外,本题还容易犯错的一个地方是最后数字字符
10. a = b 串 888并不会参与比较。
11. k = 0
12. print(a)
9. 答案:B
1. a = [1, 2, 3, 4, 5] 解析:考查栈的操作与程序实现。
2. b = list(map(int, input().split()))
由第 6行的添加操作和第 9行的删
3. stack = []
4. i = j = 0 除操作可以判断 stack用于存储栈
5. while i < len(a): 元素。因此可以通过将 a元素不断
6. stack.append( ① ) 入栈,看能否形成和 b一样的出栈
7. i += 1
8. while len(stack) > 0 and ② : 序列。第①空应该让 a中的元素入
9. stack.pop() 栈,填写 a[i]。而出栈时,需要判
10. j += 1 定栈顶元素是否和 b序列中当前元
11. if len(stack) == 0 and i == j == len(a):
12. 素是否一致,一致才能出栈,尽可 print(b, '是', a, '的出栈序列')
13. else:
14. print(b, '不是', a, '的出栈序列')
能形成与 b一样的序列,因此答案选择 B。
10. 答案:D
解析:考查树与二叉树相关知识。树的度是最大的节点的度,树的高度是节点最大的层数,选项
A正确;在任意一棵二叉树中都有 0 = 2 + 1的性质,即叶子节点数等于度为 2的节点数多一个;
非完全二叉树若用完全二叉树保存时需将树补成完全二叉树,即第三层需补全 节点的两个孩子
节点,此时节点 存储在第 6 号位置上,选项 C也正确。选项 D错误,该表达式树的前序遍历序
列是× +/ ,对节点“ ”而言先于其子节点 。
11. 答案:A
1. a = [[3,1], [2,2], [3,3], [3,4], [17,5], 解析:考查链表的操作。由第 3行
[2,6], [3,-1]]
和第 5行的代码可知 p对应完成循
2. p = head = 0
3. while p != -1: 环,q对应内层循环。从第 8行开
4. q = p 始的 if语句块可以看出:当 a[q]
5. while q != -1: 节点上的值与 a[p]节点上的值相
6. t = q
7. q = a[q][1] 同时,q指针往后移一位。这是典
8. if q != -1 and a[q][0] == a[p][0]: 型的去重操作,将与 p指针所指示
9. a[t][1] = a[q][1] 的节点值相同的 a[q]节点
10. q = t
11. p = a[p][1]
删除。指针 t的作用是维护了去重后链表最后一个节点的位置。因此答案是 A,链表中的所有节
点应该是不重复的。最后输出的就是链表的所有非重复节点。
高三信息技术 参考答案 第3页 共 6 页
12. 答案:C
解析:考查队列的应用。本题用队列维护了各个产生的数据。阅读程序知,f 为队首指针,r 为
队尾指针。将队首元素取出后,取队首元素的个位数(即语句 m=cur%10),然后将与个位数 m相
差±1 范围内的两个或三个数连接到 cur 后面,产生新的数并入队。每次至少有两个元素入队,
至多有三个元素入队。
对于选项 A,模拟出队列的前 13 个数:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 21]可知,
q[12]=21而不是 20。对于选项 B,也可以用模拟法:当 r=20时循环入队的有三个元素,因此跳
出循环时 r=23,队列 q 中共有 24 个元素。对于选项 D:q 中元素初始有序,之后每取一个队首
元素时都已递增的方式加入元素,因此所有元素也是有序的。另外,不是每个相邻元素都是相差
为 1,如 1取出后加入的值时 10、11和 12,接下来加入的时由 2生成的数,分别时 21、22、23,
其中 12 和 21 相差不为 1。选项 C 正确,q 的每个元素都由前一位数相差±1 的值加入,因此相
邻位上的每个数值也就相差 1。
13. 答案:(1)智能终端
(2)"data id=1&v=" + str(t)
(3) ③①④②
(4)D
解析:考查信息系统的搭建相关知识。
(1)从架构图看,①空处的设备连接了传感器和执行器,因此应该选择智能终端。
(2)智能终端发送数据使用 Obloq.get()函数其格式是网站的路由加数据参数。由于发送 URL
是 http://192.168.113.5/data id=1&v=27,因此 Obloq.get()函数的参数便是“/”后面部分字
符串,答案格式是“data id=1&v=27”,但程序用传感器获取的温度值由变量 t 保存,因此 27
这个常数应该由变量 t代替,因此答案是“"data id=1&v=" + str(t)”。
(3)操纵数据库的语句顺序是:导入 sqlite3 模块,建立数据库连接,建立读写游标,读写数
据库,关闭游标与关闭数据库。此处只涉及了中间三步,即建立数据库、建立读写游标、读取数
据库,答案为③①④②。
(4)render_template()函数的第一个参数是网页模板文件名,后面的参数都是网页模板中的参
数与数据传递,数据传递方式与赋值一致——将现有的变量或值传递给网页模板中的变量,只需
分清视图函数中的变量和网页模板中的变量,便可得到答案 D。
14.答案(1)AC
(2)1
(3)D
(4)df2.index
(5)df2["PM2.5"][i]
解析:考查 pandas数据处理相关知识。
(1)由题意可知,程序需要将“地区名称”符合条件的数据行筛选出来输出的独立 Excel文件,
而数据筛选的格式是 df[条件],其中“条件”部分是关于数据列的一个关系表达式,答案是 A
和 C,没有 BD这样的使用格式。
(2)pandas 处理数据函数中即可以处理行也可以处理列,drop()就是如此,参数 axis=1 表示
处理列,即删除指定的列。
(3)同一个地市中取PM2.5浓度值最高的数据行可以用分组函数groupby()和求最大值函数max()
实现,其中 groupby()函数的参数是地区名称,答案是 C。选项 A的分组依据不对——它会将 PM2.5
高三信息技术 参考答案 第4页 共 6 页
值相同的数据行分到同一组中,而不是按地区分组。选项 B的函数格式不对。选项 C是按 PM2.5
先升序排序,然后求所有数据中的最大值,此时 PM2.5 最大值只有一个数据,无法求出各个地市
的最大值。
(4)plt.bar()函数绘制柱形图需要两个参数:x轴数据和 y轴数据(每个 x对应的纵轴数据),
由题中图 c和图 d可知,横坐标是各个地区的名称,而由于数据框 df2是分组后的结果,地区名
称列已经成为了索引列,因此第④空答案应该填写 df2.index。对于第⑤空,由程序和标签的效
果图可知 df2.index[i]取出了每行数据的横坐标值,类似的,对应的纵坐标值是
df2["PM2.5"][i]。
15. 答案:(1)①(x + dx[p] + n) % n
② calc(i, j, k)
(2)不存在
(3)③ bn-i-1 或 bn-2,i-1,-1
④ b[m] <= key
解析:
1. dx = [0, 1, 0, -1] # 模拟贪吃蛇往四个方向游走时行号变化的数组
2. dy = [1, 0, -1, 0] # 列号变化数组
3. n = int(input()) # 方阵的大小
4. a, b = [], []
5. for i in range(n):
6. s = input().strip().split() # 方阵中的一行数据,“.”号和数字字符都以空格分隔
7. a.append(s)
8.
9. def calc(i, j, p):
10. x, y, res = i, j, 0
11. if '0' <= a[x][y] <= '9':
12. res = int(a[x][y])
13. for i in range(n-1):
14. x = ① # 产生新的行号
15. y = # 产生新的列号(与行号类似),代码略
16. if '0' <= a[x][y] <= '9':
17. res = res * 10 + int(a[x][y])
18. return res
19.
20. for i in range(n):
21. for j in range(n):
22. for k in range(4):
23. num = ②
24. if num > 0:
25. b.append(num)
26. print(b) # 输出所有可能能产生的整数(可能会产生重复的整数)
(1)第 5 行所在的 for 循环实现了将 n行字符逐行输入并保存至数组 a 的过程,由此也可以看
出数组 a 是二维数组,那么第 20行 i和 j的循环是遍历整个二维数组。第 22行 k的循环又是什
么呢?注意到数组 b保存了所有可能产生的数组组合,而 b中的元素是满足 num>0时才插入,因
此 num是贪吃蛇游走时产生的数字,这个数字的形成是贪吃蛇游走的结果。
阅读第 9行函数 calc(),其返回值是 res,由第 12行代码可知,res 的初始值是 a[i][j],
即函数的初始参数值,接着第 13 行是 n-1 次的循环,由此可以判断参数 i、j是行号和列号,参
数 p 是上下左右四个方向值的其中一个。所以第①空时根据方向值 p产生新的行号和列号,若当
高三信息技术 参考答案 第5页 共 6 页
前行号是 i,方向是 p,新行号是 i+dx[p],这个值若超过最大行号则变为第一行,
. 1 .
因此答案是(x + dx[p] + n) % n。加 n是为了防止 x+dx[p]出现负值。第②空是
. 2 3
调用该函数,k表示的是四个方向,答案是 calc(i, j, k)。
. . .
(2)绘制 a的二维数组形式如图所示,从 2所在位置出发,上下左右无论哪个方
向都会遇到其他数字,因此不存在单独的整数 2.
1. bn = len(b)
2. for i in range(bn-1):
3. for j in range( ③ ):
4. if b[j] > b[j+1]:
5. b[j], b[j+1] = b[j+1], b[j]
6.
7. key = int(input("请输入待查找的整数:"))
8. i, j = 0, bn-1
9. while i <= j:
10. m = (i + j) // 2
11. if ④ :
12. i = m + 1
13. else:
14. j = m - 1
15. print("小于等于", key, "的数共有", i, "个")
(3)考查了数据排序和二分查找算法。题目要求 b 数组中的数升序排序,第 4 行代码中的比较
和交换的元素是当前位与后面位元素的比较,因此 j 可以从前往后循环,答案是 0 到 bn-i-1;
也可以从后往前循环,答案是 bn-2到 i-1,且步长是-1。对于第④空,由于数据是升序排序的,
当第 11 行条件成立时,i 指针往后移一位,否则 j 前移一位,由此可以初步确定第④空需要填
写“小于号”,即 b[m]看,小于等于 key的元素共 i 个,也就是说最后一个可能等于 key 的元素的位置是 i-1,即 j。
因此,结合第 9行循环结束的条件 i<=j 可以得到结论:“等于号”需要在 if 分支中,只有这样
才能让 i 所指向最后一个可能相等的元素的后一个位置(或大于 key 的元素的位置),而 j 指向
最后一个可能相等的元素(或小于 key的元素)。因此第④空的答案是 b[m]<=key。
高三信息技术 参考答案 第6页 共 6 页