内容正文:
舟山市2024学年第一学期期末检测
高二技术试题卷
考生须知:
本试题卷分两部分,即:第一部分信息技术(50分),第二部分通用技术(50分)。全卷共16页,第一部分信息技术1至6页,第二部分通用技术7至11页。满分100分,考试时间90分钟。
答题前,考生务必将自己的姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸上,并按规定用笔将所有试题的答案涂、写在答题纸上,答案写在本试题卷上无效。
选择题的答案须用2B铅笔将答题纸上对应题目的答案标号涂黑,如要改动,须将原填涂处用橡皮擦擦净。非选择题的答案须用黑色字迹的签字笔或钢笔写在答题纸上相应区域内,作图时可使用2B铅笔,确定后须用黑色字迹的签字笔或钢笔描黑。
第一部分 信息技术(共50分)
一、选择题(本大题共12小题,每小题2分,共24分,每小题列出的四个备选项中只有一个是符合题目要求的,不选、错选、多选均不得分)
1. 下列关于数据、信息和知识的说法正确的是( )
A. 乘坐交通工具可以不出示纸质票据,说明信息可以不需要载体
B. 数据必须以十六进制方式编码后才能存储在计算机中
C. 面对同样的信息,不同的人由于生活经验、知识背景的差异,可能构建不同的知识
D. 校园卡使用不当失去磁性无法读取,说明信息在使用中会发生损耗
2. 下列关于人工智能的说法,不正确的是( )
A. 扫地机器人事先不熟悉环境,在与环境交互中不断学习是行为主义的体现
B. 混合增强智能中,人类智能和机器智能彼此协调,形成更强大更复杂智能系统
C. 演绎三段论的推理过程体现的是符号主义形式的人工智能
D. 深度学习这一数据驱动方式因其良好的性能在多个领域发挥重要作用,如围棋AlphaGo Zero
3. 自助收银机是指用于在超市、卖场实现自助购物的设备。该设备能够让顾客以自助的方式扫描商品、结账付款,免去排队过程,解放收银员与收银之间一对一的束缚关系。
该设备使用安卓操作系统,在触摸屏上点击“开始购物”,弹出“商品扫码”页面,自己动手逐一将商品的条形码对准扫码口扫描,商品的名称、价格、数量即一一呈现在屏幕上。点击“完成并付款”,屏幕上有多种支付方式可供选择。付款后自动打印交易凭条和购物清单。某自助收银机参数如图所示。
下列关于该信息系统的说法,正确的是( )
A. 自助收银系统省去了收银员,该系统用户只有顾客 B. 自助收银的出现为广大用户带去便利,不存在数字鸿沟
C. 自助收银使购物跨越时空限制,服务随时随处 D. 该款自助收银机使用的安卓操作系统属于系统软件
4. 自助收银机是指用于在超市、卖场实现自助购物的设备。该设备能够让顾客以自助的方式扫描商品、结账付款,免去排队过程,解放收银员与收银之间一对一的束缚关系。
该设备使用安卓操作系统,在触摸屏上点击“开始购物”,弹出“商品扫码”页面,自己动手逐一将商品的条形码对准扫码口扫描,商品的名称、价格、数量即一一呈现在屏幕上。点击“完成并付款”,屏幕上有多种支付方式可供选择。付款后自动打印交易凭条和购物清单。某自助收银机参数如图所示。
为了提升该系统的安全性,下列措施中不合理的是( )
A. 该系统依赖外部环境,为了避免突然断电造成的损失,应配备不间断电源
B. 可采用数据加密、数据校验等手段,保障系统中数据的保密性和完整性
C. 了方便超市对营业数据进行分析,做出科学决策,可将用户数据保存在网盘中
D. 为了保护存储数据的介质安全,可采用磁盘阵列、异地容灾等主动防护手段
5. 自助收银机是指用于在超市、卖场实现自助购物的设备。该设备能够让顾客以自助的方式扫描商品、结账付款,免去排队过程,解放收银员与收银之间一对一的束缚关系。
该设备使用安卓操作系统,在触摸屏上点击“开始购物”,弹出“商品扫码”页面,自己动手逐一将商品的条形码对准扫码口扫描,商品的名称、价格、数量即一一呈现在屏幕上。点击“完成并付款”,屏幕上有多种支付方式可供选择。付款后自动打印交易凭条和购物清单。某自助收银机参数如图所示。
下列关于该信息系统中数据的说法,正确的是( )
A. 该信息系统同时具备数据输入和输出功能 B. 商品外包装上条形码不需要事先录入到商品数据库中
C. 付款二维码数据的生成属于信息的解码过程 D. 人脸支付时,面部数据由自助收银机扫码口获取
6. 下列关于信息系统支撑技术的说法,不正确的是( )
A. 计算机未保存的数据在意外关机后丢失,是因为断电后RAM中的数据不保留
B. 许多手机具备的NFC技术由RFID演变而来,是一种远距高频无线电技术
C. 在搭建5G通信网络时,需要路由器、调制解调器等网络互连设备
D. 网络协议是正确通信的基础,比如网页传输过程中需要用到http协议
7. 某超市进行促销活动,若单笔消费满100元打九折,满200元打八折,单笔消费只享受一次打折优惠,输入单笔消费金额t元,输出实付金额。以下程序段不正确的是( )
A.
t=int(input("输入单笔消费金额(元):"))
if t >= 200:
t=t*0.8
elif t >= 100:
t=t*0.9
print("实付金额(元):",t)
B.
t=int(input("输入单笔消费金额(元):"))
if t >= 100:
if t >= 200:
t=t*0.8
else:
t=t*0.9
print("实付金额(元):",t)
C.
t=int(input("输入单笔消费金额(元):"))
if t >= 100:
t=t*0.9
elif t >= 200:
t=t*0.8
print("实付金额(元):",t)
D.
t=int(input("输入单笔消费金额(元):"))
if 100 <= t < 200:
t=t*0.9
if t >= 200:
t=t*0.8
print("实付金额(元):",t)
A. A B. B C. C D. D
8. 下列python表达式中,值最大的是( )
A. (8//3%3)**2 B. abs(-5) C. int(3.56*10+0.5)/10 D. len("234")
9. 小明编写自定义函数判断正整数x是否是素数,若x是素数则返回True,否则返回False,函数python代码如下:
def prime(x):
if x == 1:
return False
if x == 2:
return True
for i in range(2,x):
if x % i == 0:
return False
else:
return True
此函数存在问题,能测试出问题的x的值为( )
A. 2 B. 8 C. 11 D. 25
10. 有如下Python程序段:
def d2b(x):
t=""
for i in range(4):
t=str(x%2)+t
x=x//2
return t
k=int(input("输入一个十进制数:"))
BCD=""
while k > 0:
r=k%10
BCD=d2b(r)+BCD
k=k//10
print(BCD)
执行该程序段后,输入18,则输出的内容为( )
A. 00011000 B. 10000001 C. 10010 D. 11000
11. 输入一个字符串,要求按长度从小到大输出该字符串的所有非空子串,比如输入“ABC”,则依次输出“A”,“B”,“C”,“AB”,“BC”,“ABC”,实现上述功能的Python程序段如下:
s=input("输入一个字符串:")
for i in range():
for j in range():
print(s[j:j+i])
上述程序段中方框处可选代码为:
①0,len(s) ②1,len(s)+1 ③1,len(s)-i+1 ④0,len(s)-i+1
则(1)(2)处代码依次为( )
A. ②④ B. ①③ C. ①④ D. ②③
12. 有如下python程序段:
import random
rule={1:"温",2:"良",3:"恭",4:"俭",5:"让"}
res=""
for i in range(1,6):
k=random.randint(15)
if i % 2 != k % 2:
res +=rule[i]
else:
res+=rule[k]
执行该程序段后,res的值不可能是( )
A. "温良恭俭让" B. "恭俭恭俭恭" C. "俭良恭俭让" D. "温良恭良让"
二、非选择题(本大题共3小题,第13小题7分,第14小题10分,第15小题9分,共26分)
13. n个选手参加跳水比赛,选手的最终得分=基础分×难度分,基础分的计算规则为:在7个裁判的打分(1~10)中去掉一个最高分和一个最低分,剩余5个分数相加即为基础分;难度分即为动作的难度系数。现有n个选手参加比赛,采用一跳定胜负,根据输入数据,要求输出冠军的姓名和得分(假设不会出现并列分)。
实现上述功能的python代码如下:
'''
输入选手数据,存储在列表data中,data=[[‘gjj',10,8,4,5,4,8,4,2.8],['qhc',6,6,6,8,10,5,7,3.2]......]
data[i]存储编号为i(0~n-1)的选手数据,data[i][0]存储姓名,data[i][1]~data[i][7]存储7个裁判的打分,data[i][8]存储难度系数,代码略
'''
for i in range(n):
tot=0
minv=10
maxv=①
for j in range(1,8):
tot+=data[i][j]
if data[i][j] > maxv:
maxv=data[i][j]
if data[i][j] < minv:
minv=data[i][j]
tot-=maxv+minv
score=②
data[i].append(score) #在data[i]最后面追加数据
k=0
for i in range(1,n):
if data[i][9] > data[k][9]:
③
print(data[k][0],data[k][9])
(1)某选手数据为['gm',9,9,9,8,10,6,10,3.0],则'gm'的得分为____
(2)在划线处填入合适代码。____、____、____
14. 张老师为了分析某校高二学生的选课情况,将收集到的数据存储在“data.xlsx”中。部分数据如下图所示,“1”表示选择该学科,“0”表示未选择该学科。
(1)统计同时选择物理和技术的学生人数,部分python代码如下,请在划线处选择或填入合适的代码。
import pandas as pd
import matplotlib.Pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] #设置显示中文字体
df=pd.read_excel("data.xlsx")
df1=①____(单选,填字母:A.df[df.物理==1]/B.df1[df.物理==1]/C.df1[df1.物理==1])
df1=df1[df1.技术==1]
print("同时选择物理和技术的人数为:",②____)
(2)统计各班选择技术人数,并按降序绘制柱形图,如下图所示。请在划线处填入合适的代码。
df2=df.drop(["姓名","学号","政治","历史","地理","物理","化学","生物"],axis=1)#删除无关列
df3=df2.groupby("班级",as_index=False).①____
df4=df3.sort_values("技术",ascending=②____)
plt.figure(figsize=(8,4))
plt.title("各班技术考生人数")
plt.xlabel("班级")
plt.ylabel("技术考生人数")
plt.legend()
plt.show()
(3)方框处应填入的正确代码是____(单选,填字母)
A.plt.plot(df4["班级"],df4["技术"])
B.plt.bar(df4["班级"],df4["技术"],label="技术考生")
C.plt.plot(df4["班级"],df4["技术"],label="技术考生")
D.plt.bar(df4["班级"],df4["技术"])
15. 工厂在每天的生产中,需要一定数量的零件,同时知道每天生产一个零件的单价。在n天的生产中,当天生产的零件可以满足当天的需要,如果有多余的零件,可以放到下一天去使用,但要收取每个零件的保管费,每天收取的保管费可能不相同。
已知一个n天的需求量(即n天中每天需要的零件个数),需要制定出一个合理的生产计划(即n天中每天生产的实际零件个数),使得总费用最少,同时输出最少费用。
例如:当n=3时,每天的需求量与费用如下:
第一天
第二天
第三天
需求量
20
10
20
生产单价
20
30
35
保管单价
8
10
0
生产计划有多种方案,如下面的三种:
第一天
第二天
第三天
总费用
20
10
20
20×20+10×30+20×35=1400
30
0
20
30×20+8×10+20×35=1380
50
0
0
50×20+30×8+20×10=1440
显然上述方案中,第二种方案最优。
(1)若把第一个表格中第二天的保管单价改为5,则总的最少费用为____
(2)实现该功能的python程序代码如下,请在划线处填入合适的代码。
from random import randint
n=100
need=[0]*n #存储每天的需求量
price=[0]*n #存储每天的生产单价
keep=[0]*n #存储每天的保管单价
def make_data():
for i in range(n):
need[i]=randint(1,100)
price[i]=randint(1,100)
keep[i]=randint(1100)
def process(need,price,keep):
p=[0]*n #存储每天的生产计划
p[0]=①____
st=0
for i in range(1,n):
if price[i] > price[i-1]+keep[i-1]:
price[i]=price[i-1]+keep[i-1]
p[st]+=need[i]
else:
p[i]=need[i]
②____
t=0 #存储最少费用
for i in range(n):
t+=③____
return p,t
#主程序
④____
plan,cost=process(need,price,keep)
print(plan,cost)
第1页/共1页
学科网(北京)股份有限公司
$$
舟山市2024学年第一学期期末检测
高二技术试题卷
考生须知:
本试题卷分两部分,即:第一部分信息技术(50分),第二部分通用技术(50分)。全卷共16页,第一部分信息技术1至6页,第二部分通用技术7至11页。满分100分,考试时间90分钟。
答题前,考生务必将自己的姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸上,并按规定用笔将所有试题的答案涂、写在答题纸上,答案写在本试题卷上无效。
选择题的答案须用2B铅笔将答题纸上对应题目的答案标号涂黑,如要改动,须将原填涂处用橡皮擦擦净。非选择题的答案须用黑色字迹的签字笔或钢笔写在答题纸上相应区域内,作图时可使用2B铅笔,确定后须用黑色字迹的签字笔或钢笔描黑。
第一部分 信息技术(共50分)
一、选择题(本大题共12小题,每小题2分,共24分,每小题列出的四个备选项中只有一个是符合题目要求的,不选、错选、多选均不得分)
1. 下列关于数据、信息和知识说法正确的是( )
A. 乘坐交通工具可以不出示纸质票据,说明信息可以不需要载体
B. 数据必须以十六进制方式编码后才能存储在计算机中
C. 面对同样的信息,不同的人由于生活经验、知识背景的差异,可能构建不同的知识
D. 校园卡使用不当失去磁性无法读取,说明信息在使用中会发生损耗
【答案】C
【解析】
【详解】本题考查数据、信息和知识。A选项错误,信息具有载体依附性,任何信息都无法脱离载体而单独存在。乘坐交通工具不出示纸质票据,可能通过电子载体(如手机上电子票据)呈现信息,并非信息不需要载体。B选项错误,计算机内部以二进制编码形式存储数据,非十六进制。二进制的0和1两种状态便于用电子元件物理状态表示,利于计算机进行数据存储、处理和传输等操作。 C选项正确,知识是对信息深度加工提炼形成的。不同个体因生活经验、知识背景不同,面对同样信息时,思考角度、理解方式有差异,会构建出不同知识体系。如对于同一则科学研究报告,专业科研人员和普通大众基于自身知识储备和生活阅历不同,获取和形成的知识不同。 D选项错误,信息在使用过程中不会像实体物品那样损耗。校园卡失去磁性无法读取,是因作为信息存储载体的卡片磁性介质遭破坏,并非信息本身损耗。因此,本题选择C。
2. 下列关于人工智能的说法,不正确的是( )
A. 扫地机器人事先不熟悉环境,在与环境交互中不断学习是行为主义的体现
B. 混合增强智能中,人类智能和机器智能彼此协调,形成更强大更复杂的智能系统
C. 演绎三段论的推理过程体现的是符号主义形式的人工智能
D. 深度学习这一数据驱动方式因其良好的性能在多个领域发挥重要作用,如围棋AlphaGo Zero
【答案】D
【解析】
【详解】本题考查人工智能相关知识点。A选项,扫地机器人事先不熟悉环境,通过与环境交互,从环境中获取反馈并不断调整自身行为以更好地完成清扫任务,这符合行为主义人工智能通过与环境交互来学习的特点,所以该选项说法正确。B选项,混合增强智能强调人类智能和机器智能相互协作、彼此协调,融合两者优势形成更强大、更复杂的智能系统,该选项说法正确。 C选项,符号主义人工智能通过将人类的知识和推理规则用符号表示,然后基于这些符号进行逻辑推理。演绎三段论是一种典型的逻辑推理方式,它通过大前提、小前提得出结论,体现了符号主义形式的人工智能,该选项说法正确。D选项,AlphaGo Zero 是基于强化学习的成果,并非单纯的深度学习。强化学习强调智能体与环境进行交互,通过获得奖励或惩罚信号来学习最优行为策略,而深度学习主要是对数据特征进行自动提取和学习,所以该选项说法不正确。因此,本题选择D。
3. 自助收银机是指用于在超市、卖场实现自助购物的设备。该设备能够让顾客以自助的方式扫描商品、结账付款,免去排队过程,解放收银员与收银之间一对一的束缚关系。
该设备使用安卓操作系统,在触摸屏上点击“开始购物”,弹出“商品扫码”页面,自己动手逐一将商品的条形码对准扫码口扫描,商品的名称、价格、数量即一一呈现在屏幕上。点击“完成并付款”,屏幕上有多种支付方式可供选择。付款后自动打印交易凭条和购物清单。某自助收银机参数如图所示。
下列关于该信息系统的说法,正确的是( )
A. 自助收银系统省去了收银员,该系统用户只有顾客 B. 自助收银的出现为广大用户带去便利,不存在数字鸿沟
C. 自助收银使购物跨越时空限制,服务随时随处 D. 该款自助收银机使用的安卓操作系统属于系统软件
【答案】D
【解析】
【详解】本题考查对信息系统的优势和局限性。A 选项错误,自助收银系统用户除顾客外,超市工作人员也需管理维护系统,并非只有顾客。B 选项错误,部分人群如老人、对新技术接受慢的人操作自助收银机有困难,存在数字鸿沟。 C 选项错误,自助收银依赖实体场所设备,未像线上购物那样跨越时空限制。 D 选项正确,安卓操作系统管理硬件资源、提供应用运行环境,属于系统软件。结论,因此,本题选择 D。
4. 自助收银机是指用于在超市、卖场实现自助购物的设备。该设备能够让顾客以自助的方式扫描商品、结账付款,免去排队过程,解放收银员与收银之间一对一的束缚关系。
该设备使用安卓操作系统,在触摸屏上点击“开始购物”,弹出“商品扫码”页面,自己动手逐一将商品的条形码对准扫码口扫描,商品的名称、价格、数量即一一呈现在屏幕上。点击“完成并付款”,屏幕上有多种支付方式可供选择。付款后自动打印交易凭条和购物清单。某自助收银机参数如图所示。
为了提升该系统的安全性,下列措施中不合理的是( )
A. 该系统依赖外部环境,为了避免突然断电造成的损失,应配备不间断电源
B. 可采用数据加密、数据校验等手段,保障系统中数据的保密性和完整性
C. 为了方便超市对营业数据进行分析,做出科学决策,可将用户数据保存在网盘中
D. 为了保护存储数据的介质安全,可采用磁盘阵列、异地容灾等主动防护手段
【答案】C
【解析】
【详解】本题考查信息系统安全。A选项,该自助收银系统依赖电力等外部环境,突然断电可能导致交易数据丢失、未完成交易异常等情况,配备不间断电源(UPS)能在停电时提供一定时间电力支持,保障系统正常运行,避免损失,此措施合理。B选项,采用数据加密可防止数据在传输和存储过程中被窃取或篡改,保障数据的保密性;数据校验能检测数据在传输或存储过程中是否发生错误,保证数据的完整性,这些手段对于提升系统安全性很有必要,此措施合理。C选项,将用户数据保存在网盘中存在较大安全风险。网盘可能面临黑客攻击、数据泄露、平台安全漏洞等问题,且网盘的安全性和隐私保护措施不一定能满足超市对用户数据严格保密的要求,这可能导致用户信息泄露,侵犯用户隐私,此措施不合理。D选项,采用磁盘阵列可提高数据存储的可靠性,即使部分磁盘出现故障,数据也能得以保存;异地容灾则是在不同地理位置建立容灾备份中心,当本地数据出现灾难(如火灾、地震等)无法恢复时,可从异地获取数据,这两种手段都能有效保护存储数据的介质安全,此措施合理。因此,本题选择C。
5. 自助收银机是指用于在超市、卖场实现自助购物的设备。该设备能够让顾客以自助的方式扫描商品、结账付款,免去排队过程,解放收银员与收银之间一对一的束缚关系。
该设备使用安卓操作系统,在触摸屏上点击“开始购物”,弹出“商品扫码”页面,自己动手逐一将商品的条形码对准扫码口扫描,商品的名称、价格、数量即一一呈现在屏幕上。点击“完成并付款”,屏幕上有多种支付方式可供选择。付款后自动打印交易凭条和购物清单。某自助收银机参数如图所示。
下列关于该信息系统中数据的说法,正确的是( )
A. 该信息系统同时具备数据输入和输出功能 B. 商品外包装上的条形码不需要事先录入到商品数据库中
C. 付款二维码数据的生成属于信息的解码过程 D. 人脸支付时,面部数据由自助收银机扫码口获取
【答案】A
【解析】
【详解】本题考查信息系统中数据。A选项正确,顾客在自助收银机上扫描商品条形码是数据输入,屏幕显示商品信息、提供支付方式及打印凭条清单等是数据输出,所以该信息系统兼具数据输入与输出功能。B选项错误,商品外包装条形码必须事先录入商品数据库,这样自助收银机扫描后才能依据数据库信息显示商品的名称、价格、数量等,否则无法识别。C选项错误,付款二维码数据生成是编码过程,它将支付相关信息按规则转化为二维码图形,用于支付信息传递识别,并非解码。D选项错误,人脸支付时面部数据由自助收银机的摄像头获取,扫码口主要用于扫描商品条形码等,不能获取面部数据。因此,本题选择A。
6. 下列关于信息系统支撑技术的说法,不正确的是( )
A. 计算机未保存的数据在意外关机后丢失,是因为断电后RAM中的数据不保留
B. 许多手机具备的NFC技术由RFID演变而来,是一种远距高频无线电技术
C. 在搭建5G通信网络时,需要路由器、调制解调器等网络互连设备
D. 网络协议是正确通信的基础,比如网页传输过程中需要用到http协议
【答案】B
【解析】
【详解】本题考查信息系统支撑技术。 A 选项,计算机中的随机存取存储器(RAM)具有易失性,即断电后其所存储的数据会丢失。当计算机意外关机时,未保存的数据存储在 RAM 中,因此会丢失,该选项说法正确。 B 选项,许多手机具备的 NFC 技术由 RFID 演变而来,但 NFC 是一种近距高频的无线电技术,并非远距,其工作距离一般在 10 厘米以内,此选项说法错误。 C 选项,在搭建 5G 通信网络时,为实现网络连接、数据传输与交换等功能,需要路由器、调制解调器等网络互连设备,该选项说法正确。 D 选项,网络协议是保证网络中数据正确通信的基础,超文本传输协议(http)用于在 Web 浏览器和 Web 服务器之间传输网页数据,所以网页传输过程中需要用到 http 协议,该选项说法正确。 因此,本题选择 B。
7. 某超市进行促销活动,若单笔消费满100元打九折,满200元打八折,单笔消费只享受一次打折优惠,输入单笔消费金额t元,输出实付金额。以下程序段不正确的是( )
A.
t=int(input("输入单笔消费金额(元):"))
if t >= 200:
t=t*0.8
elif t >= 100:
t=t*0.9
print("实付金额(元):",t)
B.
t=int(input("输入单笔消费金额(元):"))
if t >= 100:
if t >= 200:
t=t*0.8
else:
t=t*0.9
print("实付金额(元):",t)
C.
t=int(input("输入单笔消费金额(元):"))
if t >= 100:
t=t*0.9
elif t >= 200:
t=t*0.8
print("实付金额(元):",t)
D.
t=int(input("输入单笔消费金额(元):"))
if 100 <= t < 200:
t=t*0.9
if t >= 200:
t=t*08
print("实付金额(元):",t)
A. A B. B C. C D. D
【答案】C
【解析】
【详解】本题考查分支结构的程序实现。当t为200时,根据题意此时应该打八折,但是在C选项的程序中,会错误地执行if语句控制的语句打九折。因此,本题选择C。
8. 下列python表达式中,值最大的是( )
A (8//3%3)**2 B. abs(-5) C. int(3.56*10+0.5)/10 D. len("234")
【答案】B
【解析】
【详解】本题考查 Python 表达式的运算。 A选项:先算 8//3 得 2,再算 2%3 得 2,最后 2*2 得 4。B选项:|-5| 得 5。 C选项:先算 3.56*10+0.5 得 36.1,再取整得 36,最后除以10 得 3.6。D选项:len() 函数用于返回字符串的长度,len("234") 的结果为 3,比较可得 5 最大。故本题选B。
9. 小明编写自定义函数判断正整数x是否是素数,若x是素数则返回True,否则返回False,函数python代码如下:
def prime(x):
if x == 1:
return False
if x == 2:
return True
for i in range(2,x):
if x % i == 0:
return False
else:
return True
此函数存在问题,能测试出问题的x的值为( )
A. 2 B. 8 C. 11 D. 25
【答案】D
【解析】
【详解】本题考查循环结构的程序实现。对于 x = 25: 当 i = 2 时,25 % 2!= 0,由于 else 语句,函数会错误地返回 True,而没有检查 i = 3 到 24 是否有 25的因子。因此,本题选择D。
10. 有如下Python程序段:
def d2b(x):
t=""
for i in range(4):
t=str(x%2)+t
x=x//2
return t
k=int(input("输入一个十进制数:"))
BCD=""
while k > 0:
r=k%10
BCD=d2b(r)+BCD
k=k//10
print(BCD)
执行该程序段后,输入18,则输出的内容为( )
A. 00011000 B. 10000001 C. 10010 D. 11000
【答案】A
【解析】
【详解】本题考查循环结构程序实现。函数 d2b(x) 利用循环和取余、整除操作将十进制数转换为 4 位二进制数。主程序使用 while 循环将输入的十进制数 k 的每一位数字转换为 4 位二进制数并拼接,最终输出结果。对于 k = 18: 第一次循环: r = 18 % 10 = 8。 d2b(8) 的结果为 "1000"(因为 8 = 1 * 2^3 + 0 * 2^2 + 0 * 2^1 + 0 * 2^0)。 BCD = "1000"。 k = 18 // 10 = 1。 第二次循环: r = 1 % 10 = 1。 d2b(1) 的结果为 "0001"。 BCD = "0001" + "1000" = "00011000",k = 1 // 10 = 0;循环结束。因此,本题选择A。
11. 输入一个字符串,要求按长度从小到大输出该字符串的所有非空子串,比如输入“ABC”,则依次输出“A”,“B”,“C”,“AB”,“BC”,“ABC”,实现上述功能的Python程序段如下:
s=input("输入一个字符串:")
for i in range():
for j in range():
print(s[j:j+i])
上述程序段中方框处可选代码为:
①0,len(s) ②1,len(s)+1 ③1,len(s)-i+1 ④0,len(s)-i+1
则(1)(2)处代码依次为( )
A. ②④ B. ①③ C. ①④ D. ②③
【答案】A
【解析】
【详解】本题考查循环结构的程序实现。(1)处,控制子串的长度,从长度为 1 到长度为 len(s),遍历所有可能的子串长度。(2)处,控制子串的起始位置,根据当前长度 i 来确定起始位置的范围,当 i = 1 时,起始位置可以从 0 到 len(s) - 1,因为子串长度为 1 可以从字符串的第一个字符开始到最后一个字符。 当 i = len(s) 时,起始位置只能是 0,因为整个字符串作为子串只有一种情况。因此,本题选择A。
12. 有如下python程序段:
import random
rule={1:"温",2:"良",3:"恭",4:"俭",5:"让"}
res=""
for i in range(1,6):
k=random.randint(1,5)
if i % 2 != k % 2:
res +=rule[i]
else:
res+=rule[k]
执行该程序段后,res的值不可能是( )
A. "温良恭俭让" B. "恭俭恭俭恭" C. "俭良恭俭让" D. "温良恭良让"
【答案】C
【解析】
【详解】本题考查循环结构的程序实现。分析程序可知,当i为奇数时,res中的元素只能为"温","恭","让";当i为偶数时,res中的元素只能为"良","俭";C选项不可能,因为第一个元素是奇数位置,不可能为"俭"。因此,本题选择C。
二、非选择题(本大题共3小题,第13小题7分,第14小题10分,第15小题9分,共26分)
13. n个选手参加跳水比赛,选手的最终得分=基础分×难度分,基础分的计算规则为:在7个裁判的打分(1~10)中去掉一个最高分和一个最低分,剩余5个分数相加即为基础分;难度分即为动作的难度系数。现有n个选手参加比赛,采用一跳定胜负,根据输入数据,要求输出冠军的姓名和得分(假设不会出现并列分)。
实现上述功能的python代码如下:
'''
输入选手数据,存储在列表data中,data=[[‘gjj',10,8,4,5,4,8,4,2.8],['qhc',6,6,6,8,10,5,7,3.2]......]
data[i]存储编号为i(0~n-1)的选手数据,data[i][0]存储姓名,data[i][1]~data[i][7]存储7个裁判的打分,data[i][8]存储难度系数,代码略
'''
for i in range(n):
tot=0
minv=10
maxv=①
for j in range(1,8):
tot+=data[i][j]
if data[i][j] > maxv:
maxv=data[i][j]
if data[i][j] < minv:
minv=data[i][j]
tot-=maxv+minv
score=②
data[i].append(score) #在data[i]最后面追加数据
k=0
for i in range(1,n):
if data[i][9] > data[k][9]:
③
print(data[k][0],data[k][9])
(1)某选手数据为['gm',9,9,9,8,10,6,10,3.0],则'gm'的得分为____
(2)在划线处填入合适代码。____、____、____
【答案】 ①. 135或135.0 ②. 1或小于1的值或data[i][1] ③. tot*data[i][8] ④. k=i
【解析】
【详解】本题考查循环结构的程序实现。
(1)对于选手数据为 ['gm', 9, 9, 9, 8, 10, 6, 10, 3.0]: 首先,tot = 9 + 9 + 9 + 8 + 10 + 6 + 10 = 61。 minv = 6,maxv = 10。 基础分 tot - maxv - minv = 61 - 10 - 6 = 45。 最终得分 score = 45 * 3.0 = 135.0。因此该空答案为135或135.0
(2)对于①处: 这里是在初始化 maxv,因为裁判的打分范围是 1 到 10,在寻找最高分的过程中,maxv 初始值应该设置为一个较小的值,这样在比较过程中才能找到真正的最大值。 通常,在寻找最大值时,将初始值设为一个非常小的数,而这里由于分数范围是 1 到 10,可以将 maxv 初始化为1或小于1的值或data[i][1]。 因此该空答案为1或小于1的值或data[i][1]。
对于②处: 首先,此时 tot 为 7 个裁判打分的总和减去最高分 maxv 和最低分 minv。基础分乘以难度系数 data[i][8] 即为最终得分。所以这里应该是tot*data[i][8]。 因此该空答案为tot*data[i][8]。
对于③处: 这里是在寻找最终得分最高的选手,通过遍历所有选手的最终得分(存储在 data[i][9] 中)。 当发现 data[i][9] 大于当前最高得分选手(由 k 指向)的得分时,需要更新 k 为当前选手的索引 i。 因此该空答案为 k = i。
14. 张老师为了分析某校高二学生的选课情况,将收集到的数据存储在“data.xlsx”中。部分数据如下图所示,“1”表示选择该学科,“0”表示未选择该学科。
(1)统计同时选择物理和技术的学生人数,部分python代码如下,请在划线处选择或填入合适的代码。
import pandas as pd
import matplotlib.Pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] #设置显示中文字体
df=pd.read_excel("data.xlsx")
df1=①____(单选,填字母:A.df[df.物理==1]/B.df1[df.物理==1]/C.df1[df1.物理==1])
df1=df1[df1.技术==1]
print("同时选择物理和技术的人数为:",②____)
(2)统计各班选择技术人数,并按降序绘制柱形图,如下图所示。请在划线处填入合适的代码。
df2=df.drop(["姓名","学号","政治","历史","地理","物理","化学","生物"],axis=1)#删除无关列
df3=df2.groupby("班级",as_index=False).①____
df4=df3.sort_values("技术",ascending=②____)
plt.figure(figsize=(8,4))
plt.title("各班技术考生人数")
plt.xlabel("班级")
plt.ylabel("技术考生人数")
plt.legend()
plt.show()
(3)方框处应填入的正确代码是____(单选,填字母)
A.plt.plot(df4["班级"],df4["技术"])
B.plt.bar(df4["班级"],df4["技术"],label="技术考生")
C.plt.plot(df4["班级"],df4["技术"],label="技术考生")
D.plt.bar(df4["班级"],df4["技术"])
【答案】 ①. A ②. len(df1) 或 df1.物理.count() 或 df1["物理"].count() 或 df1.物理.sum() 或 df1["物理"].sum() 或 df1.技术.count() 或 df1["技术"].count() 或 df1.技术.sum() 或 df1["技术"].sum() ③. sum() ④. False ⑤. B
【解析】
【详解】本题考查pandas数据处理。
(1)①处: 这里是要从 df 数据框中筛选出物理学科选择为 1 的学生,所以应该使用 df[df.物理 == 1]。 因此该空答案为 A。 ②处: 经过前面的筛选,df1 已经是同时选择物理和技术的学生的数据框,要统计人数,可以使用 len(df1) 来获取数据框的行数,也就是人数;也可以使用count()或者sum()函数来统计。 因此该空答案为 len(df1)或 df1.物理.count() 或 df1["物理"].count() 或 df1.物理.sum() 或 df1["物理"].sum() 或 df1.技术.count() 或 df1["技术"].count() 或 df1.技术.sum() 或 df1["技术"].sum()。
(2)①处: 这里使用 groupby 对 df2 按班级进行分组,目的是统计每个班级的技术选课人数,需要使用 sum() 函数对分组后的结果进行求和操作,这样可以得到每个班级选择技术学科的学生数量。 因此该空答案为 sum()。 ②处: 要将结果按降序排列,需要将 ascending 参数设置为 False。 因此该空答案为 False。
(3)这里是要绘制柱形图,使用 plt.bar() 函数绘制柱形图,同时需要添加 label 以便显示图例。 因此该空答案为 B。
15. 工厂在每天的生产中,需要一定数量的零件,同时知道每天生产一个零件的单价。在n天的生产中,当天生产的零件可以满足当天的需要,如果有多余的零件,可以放到下一天去使用,但要收取每个零件的保管费,每天收取的保管费可能不相同。
已知一个n天的需求量(即n天中每天需要的零件个数),需要制定出一个合理的生产计划(即n天中每天生产的实际零件个数),使得总费用最少,同时输出最少费用。
例如:当n=3时,每天的需求量与费用如下:
第一天
第二天
第三天
需求量
20
10
20
生产单价
20
30
35
保管单价
8
10
0
生产计划有多种方案,如下面的三种:
第一天
第二天
第三天
总费用
20
10
20
20×20+10×30+20×35=1400
30
0
20
30×20+8×10+20×35=1380
50
0
0
50×20+30×8+20×10=1440
显然上述方案中,第二种方案最优。
(1)若把第一个表格中第二天的保管单价改为5,则总的最少费用为____
(2)实现该功能的python程序代码如下,请在划线处填入合适的代码。
from random import randint
n=100
need=[0]*n #存储每天的需求量
price=[0]*n #存储每天的生产单价
keep=[0]*n #存储每天的保管单价
def make_data():
for i in range(n):
need[i]=randint(1,100)
price[i]=randint(1,100)
keep[i]=randint(1,100)
def process(need,price,keep):
p=[0]*n #存储每天的生产计划
p[0]=①____
st=0
for i in range(1,n):
if price[i] > price[i-1]+keep[i-1]:
price[i]=price[i-1]+keep[i-1]
p[st]+=need[i]
else:
p[i]=need[i]
②____
t=0 #存储最少费用
for i in range(n):
t+=③____
return p,t
#主程序
④____
plan,cost=process(need,price,keep)
print(plan,cost)
【答案】 ①. 1340 ②. need[0] ③. st=i ④. price[i]*p[i] ⑤. make_data()
【解析】
【详解】本题考查循环结构的程序实现,算法的综合应用。
(1)当把第一个表格中第二天的保管单价改为 5 时,总的最少费用为30×20+8×5+20×35=1340。
(2)函数 process 实现了计算最优生产计划和总费用的功能: 首先初始化第一天的生产计划 p[0] 为第一天的需求量 need[0]。 然后通过循环比较当天生产单价和前一天生产单价加上保管单价的大小关系,来决定当天的生产计划。
①处,在第一天生产时,由于没有前一天的剩余零件,所以第一天的生产计划应该满足第一天的需求,即 p[0] = need[0],因此该空答案为 need[0]。
②处,当 price[i] <= price[i - 1] + keep[i - 1] 时,说明当天生产比使用前一天剩余的(加上保管费)更划算,所以要更新开始计算累计生产的索引st,即st = i。因此该空答案为 st = i。
③处,根据总费用的计算逻辑,应该是将每天的生产量p[i] 乘以当天的生产单价 price[i] 并累加到总费用 t 中,所以此处代码为 p[i] * price[i]。 ④处,在主程序中,需要先调用 make_data 函数生成数据,所以此处应填入 make_data()。
第1页/共1页
学科网(北京)股份有限公司
$$