内容正文:
宁波市2023学年第二学期期末九校联考高一技术试题
第一部分:信息技术
一、选择题(本大题共12小题,每小题2分,共24分。每小题列出的四个备选项中只有一个是符合题目要求的,不选、多选、错选均不得分)
1. 扫地机器人可便利人们的生活,它可通过语音或手机APP控制实现人机交互。扫地机器人依赖多种传感器协同工作,以实现智能导航、避障、清洁和自我保护,其中自我保护功能是通过智能分析达到防跌落、防卡死、防迷路等功能。关于扫地机器人使用中需要的数据和信息,以下说法正确的是( )
A. 扫地机器人通过传感器采集的数据经过分析及解释后可获取信息
B. 扫地机器人中不同传感器采集的数据表现形式一定相同
C. 扫地机器人只能通过传感器获取信息
D. 扫地机器人获取的信息随着时间的变化不会发生改变
2. 扫地机器人可便利人们的生活,它可通过语音或手机APP控制实现人机交互。扫地机器人依赖多种传感器协同工作,以实现智能导航、避障、清洁和自我保护,其中自我保护功能是通过智能分析达到防跌落、防卡死、防迷路等功能。扫地机器人使用过程中,不涉及人工智能应用的是( )
A. 语音唤醒扫地机器人 B. 定时打开扫地机器人
C. 识别不同种类障碍物 D. 扫地机器人自我保护
3. 下列关于大数据的说法,正确的是( )
A. 大数据的价值密度高
B. 提高分析效率,对大数据分析时采用抽样数据
C. 文本数据处理时需要将文本从非结构化数据转为结构化数据
D. 大型购物网站对静态数据进行分析,从而实现实时广告推荐
4. 下列关于人工智能的说法,正确的是( )
A. 人工智能技术的发展只依赖于计算机技术
B. 深度学习方法一般脱离数据进行学习
C. “专家系统”是一种基于数据驱动的人工智能方法
D. 电商平台上,由人类客服与AI客服共同为顾客解决问题,属于混合增强智能
5. 下列关于数据管理与安全的说法,不正确的是( )
A. 计算机数据的管理已经经历了人工管理、文件管理、数据库管理三个阶段
B. 计算机中的数据都是经过一定规则编码后的二进制数字
C. 通过数据加密、数据校验等方法可提高数据的保密性和完整性
D. 常见的数据校验方法有磁盘阵列、数据备份及异地容灾
6. 下列关于数据编码的说法,正确的是( )
A. 使用数码相机拍照是数模转换的过程
B. 扫描二维码获取信息是解码的过程
C. 一幅1024*256、16色位图图像,其存储容量约为0.5MB
D. 一本书籍约有87万个字符,若完全按GB2312进行编码则其存储容量约为0.21MB
7. 某算法流程图如图所示。若输入x为2,y为7,则该算法虚线框处循环体的循环次数不可能为( )
A. 3 B. 4 C. 5 D. 6
8. 下列Python表达式中,值为True的是( )
A. 7%3**7<6 B. "12"[::-1]<"123"
C. abs(int(-4.9))>=14//3 D. len("pyth-on!")==6
9. 下列Python表达式中,不能表示为x属于区间[a,b]是( )
A. a<=x<=b B. x>=a and x<=b
C. not(x<a and x>b) D. not(x<a or x>b)
10. 有如下Python程序段:
key=[3,1,2];s=[4,5,6,7,8,9]
for i in range(len(s)):
j=i% len(key)
s[i]=(s[i]+key[j])% 10
执行该程序段后,s的值为( )
A. [7,6,8,0,9,1] B. [7,6,8,10,9,1]
C. [5,7,9,0,9,1] D. [5,7,9,8,0,2]
11. 有如下Python程序段:
a='abcacdbcf'
s=a[0];ans=' ';i=1;x=0
while i<len(a):
while i<len(a) and a[i]>=s[x]:
s=s+a[i]
i=i+1;x=x+1
i=i+1
执行该程序段后,s的值为( )
A. abcccdf B. abccdf C. abcdcf D. abcdf
12. 列表a长度为20,如图所示,其中a[5]~a[14]元素分为前后两部分,前面部分连续若干个3,后面部分连续若干个4。
i
0
1
2
3
4
……
15
16
17
18
19
a[i]
1
2
2
2
2
……
5
5
5
5
5
i=1;x=1;f=True;ans=0
while i<len(a):
if a[i]==a[i-1] and f==True:
x=x-1;f=False
elif a[i]==a[i-1] or a[i]!=a[i-1]:
a[x]=a[i]
x=x+1
f=True
i=i+1
执行该程序段后,列表a[:x]中所有元素之和可能为( )
A. 15 B. 10 C. 9 D. 6
二、非选择题(本大题共3小题,其中第13小题7分,第14小题10分,第15小题9分,共26分)
13. 某班级进行抽奖活动,设置1等奖a人,2等奖b人,3等奖c人,规则如下:
1.每个学生随机抽取一个三位抽奖号码(每个号码唯一)
2.抽奖时随机抽取一个抽奖号码,持有与该号码完全相等的学生获奖;若当前获得该奖次的总人数小于该奖次设置人数,则与该号码末2位相等的人可获得相同奖次,号码大的优先得奖;
3学生不重复获奖
程序运行后的运行界面如图所示。实现算法的Python程序如下,回答下列问题:
1等奖获奖人数共2人,2等奖获奖人数共3人,3等奖获奖人数共5人
参与抽奖的号码为:['895','370','316','276','270','263','262','223','216','170','165','118','116','102','095','076','059','016','014','002']
1等奖获奖号码为:['165','118']
2等奖获奖号码为:['895','095(相等末2位)','216']
3等奖获奖号码为:['116','316(相等末2位)','016(相等末2位)','370','270(相等末2位)']
(1)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。
from random import randint
num=[2,3,5] #依次设置1等奖、2等奖、3等奖获奖人数
#获取每位学生号码并按号码降序排序,存在列表hm中,代码略
print("1等奖获奖人数共",num[0],"人,2等奖获奖人数共",num[1],"人,3等奖获奖人数共",num[2],"人")
print("参与抽奖的号码为:",hm)
n=len(hm)-1;f=[False]*len(hm)
hj=[ ];j=0
while j<3:
t=randint(0,n)
while f[t]==True: #学生不重复获奖
t=randint(0,n)
f[t]=True
num[j]-=1
hj.append(hm[t])
for i in①____:
if :
f[i]=True
num[j]-=1
hj.append(hm[i]+"(相等末2位)")
if num[j]==0:
print(j+1,"等奖获奖号码为:",hj)
hj=[ ]
②_____
(2)程序实线加框处的代码有错,请改正_____
(3)若删除虚线框处代码,是否影响程序运行_______(填是/否)。
14. 某学校进行体测运动会。每人参加共三个项目的测试,项目对应值为1表示通过,为空表示未通过;小张收集了高一学生体测运动会的结果,学生的部分成绩数据如图a所示,体测中通过“项目三”且通过项目为2项及以上的学生为达标学生。
(1)观察图a中所示数据,数据中存在的问题是____(单选,填字母:A.数据重复B.格式不一致C.逻辑错误)。
(2)数据整理后,为统计达标学生人数最多前5个班级,并绘制如图b所示的柱形图,实现上述功能的部分Python程序如下,请选择合适的代码填入划线处(填字母)。
import pandas as pd #导入pandas模块
import matplotlib.pyplot as plt #导入matplotlib的pyplot子模块
#读取如图a中的数据,保存到DataFrame对象df1中,代码略
df1=df [df.项目三==1]
df2=①__
df2=②__
df2=③__
df2=④__
plt.bar(df2.index,df2.学号)
#设置绘图参数,并显示如图b所示的柱形图,代码略
①②③④处可选代码有:
A.df[df.项目通过数>=2] #筛选
B.df1[df1.项目通过数>=2]
C.df2.groupby("班级",as_index=False).sum() #分组求和
D.df2.groupby("班级").sum()
E.df2.sort_values("项目二") #升序排序
F.df2.sort_values("学号")
G.df2.tail(5)
(3)小张观察绘制的柱形图,发现柱子高度差异不明显。小张查阅资料后,发现可通过ylim函数设置图中y轴范围,如ylim(a,b)表示y轴范围为a到b;若想让差异更明显,则可用语句____设置(单选,填字母)。
A.plt.ylim(0,100) B.plt.ylim(35,45) C.plt.ylim(40,45)
15. 将n张纸牌打乱后依次正面向上放置(可以看到纸牌点数),纸牌游戏每局规则如下:
1.设置key,key中包含若干点数。
2.玩家任选一个位置开始取牌(依次连续取牌),直至取的所有牌包含key中所有点数为止,(假设一定存在包含key中所有点数的取法),下一个玩家在剩余牌中取牌(剩余牌的先后顺序不变),规则同上;最终取牌数量少的玩家获胜,若数量相等则为平局。
3.若key中包含重复点数如key=['A','A','2'],则所取牌中至少要有2个'A',1个'2'。
小明与小红按照纸牌游戏规则进行比赛,小明先抽牌;小明为找出最少取牌数量起始及终止位置(若存在多种取法,取起始位置靠前的取法)编写python程序,程序运行后的结果如图所示。
纸牌放置顺序依次为:['7','A','3','2','3','7','3','A','7','3','2','2','7']
需要包含的点数为:['2','3','7','7']
要包含key中所有牌:建议可从第9张取到第13张
(1)以图所示为例,若小明按所示结果在纸牌中取牌,则小红取牌时至少应从第_____张取到第______张才能包含key中所有点数。
(2)函数counter(key),作用为统计key中每个值出现个数并返回。请在划线处填入合适的代码。
def counter(key):
dic={}
for i in key:
if i not in dic:
dic[i]=1
else:
_______
return dic
(3)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。
#获取纸牌放置顺序并存储到列表pai,获取列表key,代码略
print("纸牌放置顺序依次为:",pai)
print("需要包含的点数为:",key)
def pd(cur_dic,dic):
for i in dic:
if①______:
return False
return True
wz=[ ]
dic=counter(key)
min_count=len(pai)+1
for i in range(len(pai)): #枚举从索引i开始取牌
for j in range(i,len(pai)):
cur_dic=②_____#cur_dic用于存放当前范围的牌中每个值出现个数
if pd(cur_dic,dic)==True: #若当前范围的牌包含key中所有点数
if min_count>j-i+1:
min_count=j-i+1
wz=[i,j]
break
print("要包含key中所有牌:建议可从第"+str(wz[0]+1)+"张取到第"+str(wz[1]+1)+"张")
(4)对任意n张纸牌,小明作为先抽牌方,按照程序结果所给建议抽牌,是否可以不败_______(选填是/否)。
第1页/共1页
学科网(北京)股份有限公司
$$
宁波市2023学年第二学期期末九校联考高一技术试题
第一部分:信息技术
一、选择题(本大题共12小题,每小题2分,共24分。每小题列出的四个备选项中只有一个是符合题目要求的,不选、多选、错选均不得分)
1. 扫地机器人可便利人们的生活,它可通过语音或手机APP控制实现人机交互。扫地机器人依赖多种传感器协同工作,以实现智能导航、避障、清洁和自我保护,其中自我保护功能是通过智能分析达到防跌落、防卡死、防迷路等功能。关于扫地机器人使用中需要的数据和信息,以下说法正确的是( )
A. 扫地机器人通过传感器采集的数据经过分析及解释后可获取信息
B. 扫地机器人中不同传感器采集的数据表现形式一定相同
C. 扫地机器人只能通过传感器获取信息
D. 扫地机器人获取的信息随着时间的变化不会发生改变
【答案】A
【解析】
【详解】本题考查的是数据与信息。选项A正确:扫地机器人通过传感器采集的数据是原始数据,这些数据经过内部算法的分析和解释后,才能转化为有用的信息,从而实现导航、避障等功能。选项B错误:不同传感器采集的数据表现形式不一定相同,传感器类型不同,数据格式各异。选项C错误:扫地机器人不仅通过传感器获取信息,还能通过外部输入获取信息。选项D错误:扫地机器人获取的信息会随时间变化。故选A。
2. 扫地机器人可便利人们的生活,它可通过语音或手机APP控制实现人机交互。扫地机器人依赖多种传感器协同工作,以实现智能导航、避障、清洁和自我保护,其中自我保护功能是通过智能分析达到防跌落、防卡死、防迷路等功能。扫地机器人使用过程中,不涉及人工智能应用的是( )
A. 语音唤醒扫地机器人 B. 定时打开扫地机器人
C. 识别不同种类障碍物 D. 扫地机器人自我保护
【答案】B
【解析】
【详解】本题考查的是人工智能的应用。语音唤醒扫地机器人:涉及语音识别技术,需通过AI分析声音特征来识别指令,属于人工智能应用。定时打开扫地机器人:基于预设时间表的简单自动化任务,仅依赖时钟触发机制,无需智能分析或学习,不涉及人工智能。识别不同种类障碍物:需使用传感器(如摄像头或激光雷达)结合模式识别算法,区分物体类型,属于计算机视觉或AI分类技术。扫地机器人自我保护:通过传感器数据智能分析环境(如防跌落、防卡死),实现自适应决策,属于人工智能应用。故选B。
3. 下列关于大数据的说法,正确的是( )
A. 大数据的价值密度高
B. 为提高分析效率,对大数据分析时采用抽样数据
C. 文本数据处理时需要将文本从非结构化数据转为结构化数据
D. 大型购物网站对静态数据进行分析,从而实现实时广告推荐
【答案】C
【解析】
【详解】本题考查的是大数据。选项A说法错误,大数据的价值密度通常较低,因为数据量巨大,但其中有价值的信息比例较小。选项B说法错误,在处理大数据时,虽然抽样方法有时用于初步探索或效率提升,但大数据的核心优势在于分析全量数据,以发现隐藏模式和趋势,抽样可能导致重要信息遗漏,不适用于需要全面分析的场景。选项C说法正确,文本数据属于非结构化数据,缺乏固定格式,为了便于计算机处理和分析,通常需要将其转换为结构化数据,例如通过分词、特征提取等技术实现转换。选项D说法错误,静态数据是固定不变的历史数据,而实时广告推荐需要处理动态数据,强调高速处理,大型购物网站通常使用流数据处理技术实现实时推荐,而非依赖静态数据。故选C。
4. 下列关于人工智能的说法,正确的是( )
A. 人工智能技术的发展只依赖于计算机技术
B. 深度学习方法一般脱离数据进行学习
C. “专家系统”是一种基于数据驱动的人工智能方法
D. 电商平台上,由人类客服与AI客服共同为顾客解决问题,属于混合增强智能
【答案】D
【解析】
【详解】本题考查的是人工智能。选项A错误:人工智能技术的发展不仅依赖于计算机技术,还涉及数学、统计学、认知科学、数据科学等多个领域。选项B错误:深度学习方法是机器学习的一种,其核心是通过大量数据进行训练和学习,从而提取特征和模式。没有数据,深度学习无法进行有效学习,因此“脱离数据”的说法不正确。选项C错误:专家系统是一种基于规则和知识库的人工智能方法,它依赖人类专家的经验知识(如规则推理),而非数据驱动。数据驱动的方法主要指机器学习(如决策树、神经网络),它们从数据中自动学习模式。选项D正确:混合增强智能强调人类智能与人工智能的协同工作。在电商平台场景中,人类客服处理复杂或情感化问题,AI客服处理标准化查询(如订单跟踪),两者结合提升效率,符合混合增强智能的定义。故选D。
5. 下列关于数据管理与安全的说法,不正确的是( )
A. 计算机数据的管理已经经历了人工管理、文件管理、数据库管理三个阶段
B. 计算机中的数据都是经过一定规则编码后的二进制数字
C. 通过数据加密、数据校验等方法可提高数据的保密性和完整性
D. 常见的数据校验方法有磁盘阵列、数据备份及异地容灾
【答案】D
【解析】
【详解】本题考查数据管理与安全。A 选项:计算机数据管理的确经历了人工管理、文件管理、数据库管理这三个阶段,每个阶段都有其独特的特点和发展背景,是数据管理发展的重要历程。B 选项:在计算机中,所有数据都是以二进制形式存在的,并且是经过一定规则编码后的二进制数字,这是计算机存储和处理数据的基本方式。C 选项:数据加密可以防止数据被非法获取和读取,提高数据的保密性;数据校验能够检查数据在传输和存储过程中是否出现错误,保证数据的完整性,所以通过这些方法可有效提高数据的保密性和完整性。D 选项:常见的数据校验方法主要有奇偶校验、循环冗余校验(CRC)等,而磁盘阵列、数据备份及异地容灾属于数据备份与恢复以及容灾的措施,并非数据校验方法。因此,本题选择 D 选项。
6. 下列关于数据编码的说法,正确的是( )
A. 使用数码相机拍照是数模转换的过程
B. 扫描二维码获取信息是解码的过程
C. 一幅1024*256、16色位图图像,其存储容量约为0.5MB
D. 一本书籍约有87万个字符,若完全按GB2312进行编码则其存储容量约为0.21MB
【答案】B
【解析】
【详解】本题考查的是编码。选项A说法错误,数码相机拍照时,将模拟信号(光线)转换为数字信号,这一过程称为模数转换(ADC),而不是数模转换(DAC)。选项B说法正确,扫描二维码时,设备通过图像识别和解析,将图形还原为原始信息,这一过程属于解码。选项C说法错误,一幅1024*256、16色位图图像(16色,表示每个像素需4位),其存储容量:1024*256*4/(8*1024*1024)=0.125MB。选项D说法错误,GB2312 编码:每个字符占 2 字节(双字节字符集),总字节数 = 870000 字符 × 2 字节/字符 = 1740000 字节。转换为 MB:1740000 ÷ 1024÷1024 ≈ 1.659 MB。故选B。
7. 某算法流程图如图所示。若输入x为2,y为7,则该算法虚线框处循环体的循环次数不可能为( )
A. 3 B. 4 C. 5 D. 6
【答案】B
【解析】
【详解】本题考查的是流程图识读。初始值:x=2,y=7。算法循环体的执行条件为 x ≥ 0 且 x ≤ 7。每次循环中,x 会随机加 1 或减 1。分析如下:
初始值:x=2,y=7。 循环结束条件:x <0 或 x> 7。 可能的循环次数: 3 次:连续减 1 三次(2→1→0→-1),第 3 次循环后 x=-1,跳出循环。
4 次:无论如何变化,4 次操作无法使 x 超出 [0,7] 范围。例如: 若全加 1,x=6(仍在范围内)。 若全减 1,x=-2,但第 3 次已减到 x=-1,循环提前结束。
5 次:例如加 1 一次(2→3),减 1 四次(3→2→1→0→-1),第 5 次循环后 x=-1,跳出循环。
6 次:全加 1(2→3→4→5→6→7→8),第 6 次后 x=8,跳出循环。
故选B。
8. 下列Python表达式中,值为True的是( )
A. 7%3**7<6 B. "12"[::-1]<"123"
C. abs(int(-4.9))>=14//3 D. len("pyth-on!")==6
【答案】C
【解析】
【详解】本题考查的是Python表达式。7%3**7<6→7%2187<6→7<6→False。"12"[::-1]<"123"→"21"<"123"→False。abs(int(-4.9)) >= 14//3→abs(-4) >= 4→4 >= 4→True。len("pyth-on!")==6→8==6→False。故选C。
9. 下列Python表达式中,不能表示为x属于区间[a,b]的是( )
A. a<=x<=b B. x>=a and x<=b
C. not(x<a and x>b) D. not(x<a or x>b)
【答案】C
【解析】
【详解】本题考查 Python 表达式。A 选项:a <= x <= b 是 Python 特有的连续比较语法,直接表示 x 属于闭区间 [a, b]。B 选项:x >= a and x <= b 通过逻辑与连接两个条件,等价于 A 选项,同样表示 x 属于闭区间 [a, b]。C 选项:not(x < a and x > b) 的内层条件 x < a and x > b 恒为假(x 不可能同时小于 a 且大于 b),取反后恒为真。因此该表达式无法正确表示 x 的区间约束。D 选项:not(x < a or x > b) 的内层条件 x < a or x > b 表示 x 在区间 [a, b] 之外,取反后即表示 x 属于闭区间 [a, b]。因此,本题选择 C 选项。
10. 有如下Python程序段:
key=[3,1,2];s=[4,5,6,7,8,9]
for i in range(len(s)):
j=i% len(key)
s[i]=(s[i]+key[j])% 10
执行该程序段后,s的值为( )
A. [7,6,8,0,9,1] B. [7,6,8,10,9,1]
C. [5,7,9,0,9,1] D. [5,7,9,8,0,2]
【答案】A
【解析】
【详解】本题考查的是python循环语句的应用。该程序段的作用是:使用列表 key = [3, 1, 2] 对列表 s = [4, 5, 6, 7, 8, 9] 进行循环加密,加密规则是:对 s 的每个元素加上 key 中对应位置的值(key 循环使用),然后取模 10(保留个位数)。j = i % len(key):因为 len(key) = 3,所以 j 的值按 0, 1, 2, 0, 1, 2 循环。
对应的 key[j] 值:key[0]=3、key[1]=1、key[2]=2、key[0]=3、key[1]=1、key[2]=2。
当 i=0:s[0] = (4 + 3) % 10 = 7 % 10 = 7
当 i=1:s[1] = (5 + 1) % 10 = 6 % 10 = 6
当 i=2:s[2] = (6 + 2) % 10 = 8 % 10 = 8
当 i=3:s[3] = (7 + 3) % 10 = 10 % 10 = 0
当 i=4:s[4] = (8 + 1) % 10 = 9 % 10 = 9
当 i=5:s[5] = (9 + 2) % 10 = 11 % 10 = 1
故选A。
11 有如下Python程序段:
a='abcacdbcf'
s=a[0];ans=' ';i=1;x=0
while i<len(a):
while i<len(a) and a[i]>=s[x]:
s=s+a[i]
i=i+1;x=x+1
i=i+1
执行该程序段后,s的值为( )
A. abcccdf B. abccdf C. abcdcf D. abcdf
【答案】B
【解析】
【详解】本题考查的是字符串处理。程序通过双重循环构建字符串 s:外部循环遍历字符串 a。 内部循环追加字符:仅当 a[i] ≥ s 的当前最后一个字符(由 s[x] 表示)时,才将 a[i] 追加到 s。 如果条件不满足,i 增加 1(跳过该字符),不追加。 最终 s 包含索引为 0、1、2、4、5、8 的字符(即 'a'、'b'、'c'、'c'、'd'、'f'),形成 'abccdf'。故选B。
12. 列表a长度为20,如图所示,其中a[5]~a[14]元素分为前后两部分,前面部分连续若干个3,后面部分连续若干个4。
i
0
1
2
3
4
……
15
16
17
18
19
a[i]
1
2
2
2
2
……
5
5
5
5
5
i=1;x=1;f=True;ans=0
while i<len(a):
if a[i]==a[i-1] and f==True:
x=x-1;f=False
elif a[i]==a[i-1] or a[i]!=a[i-1]:
a[x]=a[i]
x=x+1
f=True
i=i+1
执行该程序段后,列表a[:x]中所有元素之和可能为( )
A. 15 B. 10 C. 9 D. 6
【答案】D
【解析】
【详解】本题考查的是python循环语句及选择语句的应用。程序的作用是去除连续的重复元素,x表示新列表的长度,a[:x]是去重后的列表。假设a[5]到a[14]中有k个3和(10 - k)个4。 如果k是奇数: 2的连续部分会被完全去除,3、4的连续部分会被部分去重,a[:x]=[1,3,4,5],元素之和为13。 如果k是偶数: 2、3、4的连续部分会被完全去重,a[:x]=[1,5],元素之和为6。故选D。
二、非选择题(本大题共3小题,其中第13小题7分,第14小题10分,第15小题9分,共26分)
13. 某班级进行抽奖活动,设置1等奖a人,2等奖b人,3等奖c人,规则如下:
1.每个学生随机抽取一个三位抽奖号码(每个号码唯一)
2.抽奖时随机抽取一个抽奖号码,持有与该号码完全相等的学生获奖;若当前获得该奖次的总人数小于该奖次设置人数,则与该号码末2位相等的人可获得相同奖次,号码大的优先得奖;
3.学生不重复获奖
程序运行后的运行界面如图所示。实现算法的Python程序如下,回答下列问题:
1等奖获奖人数共2人,2等奖获奖人数共3人,3等奖获奖人数共5人
参与抽奖的号码为:['895','370','316','276','270','263','262','223','216','170','165','118','116','102','095','076','059','016','014','002']
1等奖获奖号码为:['165','118']
2等奖获奖号码为:['895','095(相等末2位)','216']
3等奖获奖号码为:['116','316(相等末2位)','016(相等末2位)','370','270(相等末2位)']
(1)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。
from random import randint
num=[2,3,5] #依次设置1等奖、2等奖、3等奖获奖人数
#获取每位学生号码并按号码降序排序,存在列表hm中,代码略
print("1等奖获奖人数共",num[0],"人,2等奖获奖人数共",num[1],"人,3等奖获奖人数共",num[2],"人")
print("参与抽奖号码为:",hm)
n=len(hm)-1;f=[False]*len(hm)
hj=[ ];j=0
while j<3:
t=randint(0,n)
while f[t]==True: #学生不重复获奖
t=randint(0,n)
f[t]=True
num[j]-=1
hjappend(hm[t])
for i in①____:
if :
f[i]=True
num[j]-=1
hj.append(hm[i]+"(相等末2位)")
if num[j]==0:
print(j+1,"等奖获奖号码为:",hj)
hj=[ ]
②_____
(2)程序实线加框处的代码有错,请改正_____
(3)若删除虚线框处代码,是否影响程序运行_______(填是/否)。
【答案】 ①. range(len(hm)) ②. j=j+1 ③. hm[t][1:]==hm[i][1:] and f[i]==False或hm[t][1:]==hm[i][1:] and f[i]!=True或其它等价答案 ④. 是
【解析】
【详解】本题考查的是字符串处理。
(1)①这里需要遍历所有学生的抽奖号码,检查是否有与当前中奖号码末两位相同的号码,故此次应为:range(len(hm));②当某个奖级的获奖人数满足设置人数后,需要进入下一个奖级的抽奖 j += 1使循环变量j递增,进入下一轮循环处理下一个奖级,故此次应为:j=j+1。
(2)题目要求“末2位相等”且“号码大的优先”(已通过降序排序保证),且学生不能重复获奖。故应该为:hm[t][1:]==hm[i][1:] and f[i]==False或hm[t][1:]==hm[i][1:] and f[i]!=True或其它等价答案
(3)虚线框代码是 if num[j]==0:break,删除后会影响程序运行,因为当该奖次人数已满时,程序无法及时跳出循环,可能导致重复添加获奖者。
14. 某学校进行体测运动会。每人参加共三个项目的测试,项目对应值为1表示通过,为空表示未通过;小张收集了高一学生体测运动会的结果,学生的部分成绩数据如图a所示,体测中通过“项目三”且通过项目为2项及以上的学生为达标学生。
(1)观察图a中所示数据,数据中存在的问题是____(单选,填字母:A.数据重复B.格式不一致C.逻辑错误)。
(2)数据整理后,为统计达标学生人数最多的前5个班级,并绘制如图b所示的柱形图,实现上述功能的部分Python程序如下,请选择合适的代码填入划线处(填字母)。
import pandas as pd #导入pandas模块
import matplotlib.pyplot as plt #导入matplotlib的pyplot子模块
#读取如图a中的数据,保存到DataFrame对象df1中,代码略
df1=df [df.项目三==1]
df2=①__
df2=②__
df2=③__
df2=④__
plt.bar(df2.index,df2.学号)
#设置绘图参数,并显示如图b所示的柱形图,代码略
①②③④处可选代码有:
Adf[df.项目通过数>=2] #筛选
B.df1[df1.项目通过数>=2]
C.df2.groupby("班级",as_index=False).sum() #分组求和
D.df2.groupby("班级").sum()
E.df2.sort_values("项目二") #升序排序
F.df2.sort_values("学号")
G.df2.tail(5)
(3)小张观察绘制的柱形图,发现柱子高度差异不明显。小张查阅资料后,发现可通过ylim函数设置图中y轴范围,如ylim(a,b)表示y轴范围为a到b;若想让差异更明显,则可用语句____设置(单选,填字母)。
A.plt.ylim(0,100) B.plt.ylim(35,45) C.plt.ylim(40,45)
【答案】 ①. C ②. B ③. D ④. F ⑤. G ⑥. B
【解析】
【详解】本题考查的是数据分析。
(1)学号为1248的学生,项目通过数为4与总项目数3相矛盾,故选C。
(2)首先筛选出通过“项目三”的学生(df1 = df[df.项目三 == 1])。①接着筛选出通过项目数≥2的学生(df2 = df1[df1.项目通过数 >= 2],对应选项B)。②按班级分组并求和(df2 = df2.groupby("班级").sum(),对应选项D,因为需要重置索引)。③对数据进行排序(df2 = df2.sort_values("学号"),对应选项F)。④取前5名(df2 = df2.tail(5),对应选项G,因为默认升序排序后取尾部是最大值)。
(3)缩小y轴范围(如35到45)可以放大差异。A的范围(0到100)太宽,差异不明显。C的范围(40到45)可能过窄,部分数据可能被截断。故选B。
15. 将n张纸牌打乱后依次正面向上放置(可以看到纸牌点数),纸牌游戏每局规则如下:
1.设置key,key中包含若干点数。
2.玩家任选一个位置开始取牌(依次连续取牌),直至取的所有牌包含key中所有点数为止,(假设一定存在包含key中所有点数的取法),下一个玩家在剩余牌中取牌(剩余牌的先后顺序不变),规则同上;最终取牌数量少的玩家获胜,若数量相等则为平局。
3.若key中包含重复点数如key=['A','A','2'],则所取牌中至少要有2个'A',1个'2'。
小明与小红按照纸牌游戏规则进行比赛,小明先抽牌;小明为找出最少取牌数量的起始及终止位置(若存在多种取法,取起始位置靠前的取法)编写python程序,程序运行后的结果如图所示。
纸牌放置顺序依次为:['7','A','3','2','3','7','3','A','7','3','2','2','7']
需要包含的点数为:['2','3','7','7']
要包含key中所有牌:建议可从第9张取到第13张
(1)以图所示为例,若小明按所示结果在纸牌中取牌,则小红取牌时至少应从第_____张取到第______张才能包含key中所有点数。
(2)函数counter(key),作用为统计key中每个值出现个数并返回。请在划线处填入合适的代码。
def counter(key):
dic={}
for i in key:
if i not in dic:
dic[i]=1
else:
_______
return dic
(3)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。
#获取纸牌放置顺序并存储到列表pai,获取列表key,代码略
print("纸牌放置顺序依次为:",pai)
print("需要包含的点数为:",key)
def pd(cur_dic,dic):
for i in dic:
if①______:
return False
return True
wz=[ ]
dic=counter(key)
min_count=len(pai)+1
for i in range(len(pai)): #枚举从索引i开始取牌
for j in range(i,len(pai)):
cur_dic=②_____#cur_dic用于存放当前范围的牌中每个值出现个数
if pd(cur_dic,dic)==True: #若当前范围的牌包含key中所有点数
if min_count>j-i+1:
min_count=j-i+1
wz=[i,j]
break
print("要包含key中所有牌:建议可从第"+str(wz[0]+1)+"张取到第"+str(wz[1]+1)+"张")
(4)对任意n张纸牌,小明作为先抽牌方,按照程序结果所给建议抽牌,是否可以不败_______(选填是/否)。
【答案】 ①. 1 ②. 6 ③. dic[i]+=1 ④. i not in cur_dic or cur_dic[i]<dic[i] ⑤. counter(pai[i:j+1]) ⑥. 否
【解析】
【详解】本题考查是数组的应用。
(1)根据题目描述,小明从第9张取到第13张牌后,剩余的牌序列为: ['7', 'A', '3', '2', '3', '7', '3', 'A'],从第1张('7')开始取到第6张('7')可以包含:'7', 'A', '3', '2', '3', '7'(包含2个'7',1个'2',2个'3',满足key要求) 更短的序列是从第3张('3')到第6张('7'):'3', '2', '3', '7'(包含1个'2',2个'3',1个'7',不满足key中需要2个'7') 因此最短的满足条件的序列是从第1张到第6张。
(2)counter函数的作用是统计key中每个值的出现次数。填空部分是在字典中累加已存在的键的值。 故答案:dic[i] += 1。
(3)①pd函数用于判断当前子序列cur_dic是否满足dic(即key的计数要求)。条件是如果cur_dic中某个键的值小于dic中的值,则返回False,故此处应为:i not in cur_dic or cur_dic[i] < dic[i];②处cur_dic需要统计当前子序列pai[i:j+1]中每个值的出现次数,可以直接调用counter函数,故此处应为:counter(pai[i:j+1])。
(4)小明作为先手,按照程序建议取最短的子序列,但后手的小红可以采取同样的策略。如果剩余牌中存在更短的满足条件的子序列,小红可以获胜。因此小明不一定能保证不败。
第1页/共1页
学科网(北京)股份有限公司
$$