内容正文:
高二年级技术学科试题
考生须知:
1.本卷共11页满分100分,考试时间 90分钟。
2.答题前,在答题卷指定区域填写班级、姓名、考场号、座位号及准考证号并填涂相应数字。
3.所有答案必须写在答题纸上,写在试卷上无效。
4.考试结束后,只需上交答题纸。
第一部分 信息技术(共50分)
一、选择题(本大题共12小题,每小题2分,共24分。每小题列出的四个备选项中只有一个是符合题目要求的,不选、多选、错选均不得分)
阅读下列材料,完成下面小题。
随着网络技术发展,抖音、快手、今日头条等自媒体平台广泛普及。用户可发布视频、文字,也可利用平台资源开展学习。自媒体丰富了网络内容,信息获取更加便捷,但平台数据量大、数据类型多样。
1. 下列关于数据与信息的说法,正确的是( )
A. 用户上传的视频、图像、文字弹幕均属于信息
B. 平台上的信息经过网络传播共享后会造成损耗
C. 平台对原始视频加工剪辑生成科普短片,体现信息可以加工处理
D. 平台内所有视频数据都属于结构化数据
2. 关于大数据应用的说法,正确的是( )
A. 自媒体平台大数据来源只有平台官方后台录入
B. 平台海量短视频数据,普遍具有价值密度高的特征
C. 大数据分析用户喜好,处理时必须追求百分百精确,不允许偏差
D. 平台汇集视频、图片、弹幕文字、点赞日志多种类型数据,体现大数据的多样性
3. 关于自媒体平台的数据管理与安全,下列做法正确的是( )
A. 用户的身份证、手机号等隐私数据,无需加密直接存储
B. 采用磁盘阵列或异地备份技术可防止用户数据丢失
C. 用户发布内容平台不需要备份留存
D. 平台算法推送的新闻内容全部真实可靠,可以直接采信
4. 下列关于信息编码的说法,正确的是( )
A. 降低声音强度能节省wav音频文件的存储空间
B. 矢量图形的文件大小与图形尺寸大小无关
C. 识别二维码是信息编码的过程
D. 量化值的取值范围是0到255时,量化位数至少位7位
5. 下列关于进制的说法,正确的是( )
A. 十六进制数49+1=50
B. 二进制101101转十六进制数为B4
C. 若十进制数41转二进制值为100101
D. 十进制数n除以16取余数,与n的二进制数最右侧四位等值
6. 双声道未经压缩的音频文件,采样率44.1kHz,量化位数16位,时长1分钟,将其转换容量为5MB的mp3音乐,其压缩比约为( )
A. 8:1 B. 6:1 C. 4:1 D. 2:1
7. 观察分析流程图,某算法的部分流程图如图所示。执行这部分流程,若输出c的值为3,则输入a的值可能是( )
A. 8 B. 15 C. 29 D. 32
8. 有如下Python程序段:
s="WERT98765"
lst=["2","3","4","5"]
dic={"W94":1,"E84":2,"R74":3,"T64":4}
print (dic[s[3:8:4]+ lst[2]])
该程序运行后的输出结果为
A. 4 B. 3 C. 2 D. 1
9. 有如下程序段,目的是为了使输出的z值有0,1,2三种情况,但该程序段中存在问题,输入下列哪个选项的数据能测试出其中的问题( )
n = int(input())
if n <= 20:
z=0
if n <= 50:
z=1
else:
z=2
print(z)
A. 20 B. 40 C. 50 D. 60
10. 有如下python程序段:
s='301-413-132''
isum,t=0,0
for i in s:
if "0" <= i <= "4":
t=t*5+ int(i)
else:
isum+=t
t=0
print(isum)
运行该程序段,输出结果是( )
A. 76 B. 108 C. 184 D. 226
11. 有如下pyhon程序段:
a = [3,5,9,6, 7,2, 1]
b = [1,9,3,4,8,6, 7]
flag = True
ans=[]
for i in range(6, -1, -1):
if flag and a[i] < b[i]:
ans. append(b[i]-a[i])
flag = False
elif a[i] > b[i]:
ans. append(a[i]-b[i])
print(ans)
执行该程序段后,输出结果为( )
A. [2, 4, 6, 2, 1, 4, 6] B. [6, 2,6,2] C. [2, 4, 6, 2] D. [6, 4, 1, 6, 4, 2]
12. 函数jm(password)用来对加密字符进行解密,代码如下:
def jm(password):
key = {"b": "d", "d": "a", "a": "c", "c": "b"}
i =0
while i < len(password) -1:
if i >= 0 and key[password[i]] == password[i+1]:
password = password[:i] + password[i+1:]
i - =1
else:
i +=1
return password
运行jm("bdacbdac"),函数的返回值为( )
A. "bdacbdac" B. "bc" C. "c" D. "bdac"
二、非选择题(本大题共3小题,其中第13题8分,第14题8分,第15题10分,共26分)
13. 在生物学中,碱基互补配对计算互补链规则有:DNA链或RNA链C与 G相互配对,DNA链A与T相互配对,RNA链A与U相互配对,再相应处理,即是互补链。例如:DNA链“AGTCG”的互补链为“CGACT”。小明用Python设计程序,实现碱基互补配对计算互补链。
(1)RNA链“AUUGUC”的互补链是______。
(2)完善cpl函数中的程序填空,实现相应功能。
def cpl(sequ, type):
①____
dicDNA = {"A": "T", "T": "A", "G": "C", "C": "G"}
dicRNA = {"A": "U", "U": "A", "G": "C", "C": "G"}
for nt in ②____:
if type == "DNA":
ans =dicDNA[nt] + ans
elif type == "RNA":
ans = dicRNA[nt] + ans
return ans
# data中数据,如data = [["ACGTAG", "DNA"], ["GCUAGG", "RNA"]]代码略
for seq in data:
sequ, type = seq[0], seq[1]
comp = ③____
print(type, "链", sequ, "的互补链是:", comp)
14. 某高中为了丰富学生的课余生活,将增设一个最受欢迎的社团,为此学校展开了社团投票活动,投票结果存储在“社团投票.xlsx”文件中,投票情况如图a。通过数据与分析,绘制如图b所示图表。
请回答下列问题:
(1)以下代码实现在二维表中添加班级列,并将每个学生的班级存入其中。
请在①处选择选择合适的选项(多选)______
A.df. index B.range(df. index) C.len(df) D.range(len(df))
请在②处填入合适的代码______
import pandas as pd
import matplotlib. pyplot as plt #引入matplotlib绘图模块
plt. rc(' font', **{' family': 'SimHei'})' #可正常显示中文
df= pd. read excel('社团投票. xlsx')
df["班级"]=0#在最后一列增加"班级"列,该列值均为0
for i in ① :
② =(df. at[i,'"学号"])//100%100
print(df)
(2)统计各社团投票人数,并制作社团投票结果如图b,程序的方框中应填入的正确代码为______(多选,填字母)。
import matplotlib. pyplot as plt #引入matplotlib绘图模块
plt. rc(' font', **{' family': 'SimHei'})
plt. title("社团投票情况")
plt. show()
方框中的代码由下列语句中的部分语句组成:
A.df1= df.. groupby("社团", as index= False).学号. sum()
B.df1= df. groupby("社团", as index= False).学号. count()
C.df1=df1. sort values("学号", ascending= True)
D.df1=df1. sort values("学号", ascending= False)
E.plt. bar(df1.社团,df1.学号)
F.plt. bar(df1.学号,df1.社团)
(3)若要筛选出某班学生,以方便了解该班投票情况,请在④处合适的代码
bj= int(input("请输入班级:"))
df3= ④____
15. 某工厂运输工件,各工件体积存储在“gj.txt”文件中,且工件体积均不超过货车最大可装载体积。为提高货车利用率,小杜利用Python编写程序代码,实现计算最少货车数量。
请回答下列问题:
(1)若各工件体积如hw = [14,11,8,5,2,1],货车最大装载体积为20,则最少需要______辆货车。
(2)实现计算最少货车数量程序代码如下,请补全空格处代码。
def read f():
a = []
#读取" gj. txt"文件中各工件体积返回a值如a=[17,13,12,11,...],代码略
def isum(x):
t =0
for i in range(len(x)):
①____
return t
vol =20 #货车最大可装载体积
hw = read_f() #读取" gj. txt"文件中各工件体积
hw_num = [0] * (vol + 1)
for num in hw:
hw_ num[num]= ②____
v=vol
s=0
while v > 0:
if hw_num[v] ==0 or s ==0:
v = v − 1
s = v
elif hw_num[s] == 0 or V + s > vol
s = s − 1
else:
hw_num[v] - =1
hw_num[s] - =1
hw_num[v + s] +=1
③____
s = vol - v
print("最少需要的货车数量为:", isum(hw_num))
(3)若省略加框处代码,货车体积vol为20,则下列工件体积数据中,能检查出该程序错误的有______(单选)
A. [7, 12, 3, 8, 17, 7, 3] B. [10, 7, 8, 7, 8,, 10, 16]
C. [10, 10, 5, 14, 11, 5,18] D. [13, 3, 11, 4, 9, 4, 17]
第1页/共1页
学科网(北京)股份有限公司
$
高二年级技术学科试题
考生须知:
1.本卷共11页满分100分,考试时间 90分钟。
2.答题前,在答题卷指定区域填写班级、姓名、考场号、座位号及准考证号并填涂相应数字。
3.所有答案必须写在答题纸上,写在试卷上无效。
4.考试结束后,只需上交答题纸。
第一部分 信息技术(共50分)
一、选择题(本大题共12小题,每小题2分,共24分。每小题列出的四个备选项中只有一个是符合题目要求的,不选、多选、错选均不得分)
阅读下列材料,完成下面小题。
随着网络技术发展,抖音、快手、今日头条等自媒体平台广泛普及。用户可发布视频、文字,也可利用平台资源开展学习。自媒体丰富了网络内容,信息获取更加便捷,但平台数据量大、数据类型多样。
1. 下列关于数据与信息的说法,正确的是( )
A. 用户上传的视频、图像、文字弹幕均属于信息
B. 平台上的信息经过网络传播共享后会造成损耗
C. 平台对原始视频加工剪辑生成科普短片,体现信息可以加工处理
D. 平台内所有视频数据都属于结构化数据
2. 关于大数据应用的说法,正确的是( )
A. 自媒体平台大数据来源只有平台官方后台录入
B. 平台海量短视频数据,普遍具有价值密度高的特征
C. 大数据分析用户喜好,处理时必须追求百分百精确,不允许偏差
D. 平台汇集视频、图片、弹幕文字、点赞日志多种类型数据,体现大数据的多样性
3. 关于自媒体平台的数据管理与安全,下列做法正确的是( )
A. 用户的身份证、手机号等隐私数据,无需加密直接存储
B. 采用磁盘阵列或异地备份技术可防止用户数据丢失
C. 用户发布内容平台不需要备份留存
D. 平台算法推送的新闻内容全部真实可靠,可以直接采信
【答案】1. C 2. D 3. B
【解析】
【1题详解】
本题考查的是数据与信息。选项A里用户上传的视频、图像、文字弹幕属于数据,是信息的载体而非信息本身,说法错误;选项B信息具有共享性,传播共享后不会产生损耗,说法错误;选项C将原始视频加工剪辑生成科普短片,是对原始内容进行处理得到新的可用内容,体现了信息可以加工处理,说法正确;选项D视频数据属于非结构化数据,并非所有平台内视频都是结构化数据,说法错误。故本题应选C。
【2题详解】
本题考查的是大数据应用。选项A自媒体平台大数据来源包括用户上传内容、交互行为数据等多个渠道,并非只有官方后台录入,说法错误;选项B大数据普遍具有价值密度低的特征,海量短视频中有效价值信息占比很低,说法错误;选项C大数据的特征允许一定的容错性,不需要追求百分百精确,说法错误;选项D汇集多种不同类型的数据,体现了大数据多样性的特征,说法正确。故本题应选D。
【3题详解】
本题考查的是数据安全与管理。选项A用户的隐私数据必须加密存储,直接存储会带来严重的信息安全风险,说法错误;选项B磁盘阵列可以实现本地数据冗余,异地备份可以在本地出现故障时保障数据留存,能够防止用户数据丢失,说法正确;选项C用户发布的内容平台需要按规定备份留存,满足合规和溯源需求,说法错误;选项D算法推送的内容无法保证全部真实可靠,需要用户自行甄别,说法错误。故本题应选B。
4. 下列关于信息编码的说法,正确的是( )
A. 降低声音强度能节省wav音频文件的存储空间
B. 矢量图形的文件大小与图形尺寸大小无关
C. 识别二维码是信息编码的过程
D. 量化值的取值范围是0到255时,量化位数至少位7位
【答案】B
【解析】
【详解】本题考查信息编码相关的多媒体基础概念。选项A,wav音频文件的存储空间由采样频率、量化位数、声道数和时长决定,和声音强度没有关联,降低声音强度不会改变这些参数,无法节省存储空间,该说法错误。选项B,矢量图形是通过数学公式描述图形元素,文件大小仅和图形的复杂程度相关,和图形的显示尺寸大小无关,该说法正确。选项C,识别二维码是将二维码承载的信息提取出来的过程,属于信息解码,而非信息编码,该说法错误。选项D,量化值取值范围是0到255时,总共有256个不同的取值,2的8次方等于256,因此量化位数至少为8位,不是7位,该说法错误。故答案为:B。
5. 下列关于进制的说法,正确的是( )
A. 十六进制数49+1=50
B. 二进制101101转十六进制数为B4
C. 若十进制数41转二进制值为100101
D. 十进制数n除以16取余数,与n的二进制数最右侧四位等值
【答案】D
【解析】
【详解】本题考查不同进制的运算与转换规则。选项A,十六进制采用逢16进1的规则,十六进制数49加1的结果是4A,并非50,该说法错误。选项B,二进制转十六进制需要从右往左每四位分为一组,二进制101101分组后为0010和1101,对应十六进制为2D,并非B4,该说法错误。选项C,十进制数41转二进制的结果是101001,并非100101,该说法错误。选项D,十进制数n除以16的余数的取值范围是0到15,正好对应4位二进制数的所有取值,而n的二进制数最右侧四位的数值范围同样是0到15,二者等值,该说法正确。故答案为:D
6. 双声道未经压缩的音频文件,采样率44.1kHz,量化位数16位,时长1分钟,将其转换容量为5MB的mp3音乐,其压缩比约为( )
A. 8:1 B. 6:1 C. 4:1 D. 2:1
【答案】D
【解析】
【详解】本题考查音频文件容量计算与压缩比的相关知识点。音频容量计算公式为:采样率×量化位数×声道数×时长(秒)÷8。代入数值计算,采样率44.1kHz即44100Hz,时长1分钟为60秒,双声道,可得原始容量为44100×16×2×60÷8,计算结果为10584000字节,换算为MB约等于10.1MB。已知压缩后的mp3文件容量为5MB,压缩比为原始容量比上压缩后容量,10.1MB比5MB约等于2:1。故答案为:D
7. 观察分析流程图,某算法的部分流程图如图所示。执行这部分流程,若输出c的值为3,则输入a的值可能是( )
A. 8 B. 15 C. 29 D. 32
【答案】C
【解析】
【详解】本题考查得是流程图识读。阅读流程图,可知其功能是输入一个数,转换为二进制数,求二进制数中1的个数与0的个数差值是多少。8转换为二进制数为:1000,1的个数与0的个数差值是-3;15转换为二进制数为:1111,1的个数与0的个数差值是4;29转换为二进制数为:11101,1的个数与0的个数差值是3;32转换为二进制数为:10000,1的个数与0的个数差值是-4。故选C。
8. 有如下Python程序段:
s="WERT98765"
lst=["2","3","4","5"]
dic={"W94":1,"E84":2,"R74":3,"T64":4}
print (dic[s[3:8:4]+ lst[2]])
该程序运行后的输出结果为
A. 4 B. 3 C. 2 D. 1
【答案】A
【解析】
【详解】本题考查Python字符串切片、列表索引访问以及字典按键取值的相关操作。首先分析字符串s的切片操作s[3:8:4],s的内容是"WERT98765",索引从0开始计数,索引3对应的字符是'T',切片步长为4,结束位置索引8不包含在内,因此仅能取到索引3的字符'T'。接着取列表lst的索引2元素,lst内容是["2","3","4","5"],索引2对应的元素是字符串"4",将两部分拼接得到键名"T64"。最后在字典dic中查找该键对应的值,dic里"T64"对应的取值为4。故答案为:A
9. 有如下程序段,目的是为了使输出的z值有0,1,2三种情况,但该程序段中存在问题,输入下列哪个选项的数据能测试出其中的问题( )
n = int(input())
if n <= 20:
z=0
if n <= 50:
z=1
else:
z=2
print(z)
A. 20 B. 40 C. 50 D. 60
【答案】A
【解析】
【详解】本题考查的是选择语句及程序的调试。这个程序的逻辑漏洞是两个独立的if语句没有互斥分支:原本预期n<=20时z=0,2050时z=2,但实际执行时,满足n<=20的数值,在给z赋值为0之后,还会进入第二个if n<=50的判断,最终z会被覆盖成1,永远无法输出预期的0。输入A选项20:按预期z应该输出0,但实际最终输出z=1,能测出程序的问题。故本题应选A。
10. 有如下python程序段:
s='301-413-132''
isum,t=0,0
for i in s:
if "0" <= i <= "4":
t=t*5+ int(i)
else:
isum+=t
t=0
print(isum)
运行该程序段,输出结果是( )
A. 76 B. 108 C. 184 D. 226
【答案】C
【解析】
【详解】本题考查Python字符串遍历与数值累计运算的相关知识点。字符串s='301-413-132',初始isum=0,t=0。
首先处理字符'3',满足0<=i<=4,t=0*5+3=3;接着处理'0',t=3*5+0=15;处理'1',t=15*5+1=76;遇到字符'-',不满足条件,将t=76累加到isum,此时isum=76,t重置为0。接下来处理'4',t=0*5+4=4;处理'1',t=4*5+1=21;处理'3',t=21*5+3=108;遇到字符'-',将t=108累加到isum,此时isum=76+108=184,t重置为0。最后处理'1'、'3'、'2',循环结束后剩余的t没有触发else分支完成累加,最终isum的值为184,对应第三个选项。故答案为:C。
11. 有如下pyhon程序段:
a = [3,5,9,6, 7,2, 1]
b = [1,9,3,4,8,6, 7]
flag = True
ans=[]
for i in range(6, -1, -1):
if flag and a[i] < b[i]:
ans. append(b[i]-a[i])
flag = False
elif a[i] > b[i]:
ans. append(a[i]-b[i])
print(ans)
执行该程序段后,输出结果为( )
A. [2, 4, 6, 2, 1, 4, 6] B. [6, 2,6,2] C. [2, 4, 6, 2] D. [6, 4, 1, 6, 4, 2]
【答案】B
【解析】
【详解】本题考查的是循环语句与分支语句的应用。程序执行过程如下:
i
a[i]
b[i]
判断
ans
6
1
7
flag=True 且 a<b → append(7−1)=6,flag 变 False
[6]
5
2
6
flag 已 False;elif a>b 不成立
[6]
4
7
8
flag 已 False;elif a>b 不成立
[6]
3
6
4
a>b → append(6−4)=2
[6, 2]
2
9
3
a>b → append(9−3)=6
[6, 2, 6]
1
5
9
flag 已 False;elif a>b 不成立
[6, 2, 6]
0
3
1
a>b → append(3−1)=2
[6, 2, 6, 2]
故本题应选B。
12. 函数jm(password)用来对加密字符进行解密,代码如下:
def jm(password):
key = {"b": "d", "d": "a", "a": "c", "c": "b"}
i =0
while i < len(password) -1:
if i >= 0 and key[password[i]] == password[i+1]:
password = password[:i] + password[i+1:]
i - =1
else:
i +=1
return password
运行jm("bdacbdac"),函数的返回值为( )
A. "bdacbdac" B. "bc" C. "c" D. "bdac"
【答案】C
【解析】
【详解】本题考查的是字符串的操作。字典 key 定义了一条循环链:b → d → a → c → b。函数的作用是:从左往右扫描字符串,只要发现某个字符的下一个字符正好是它在 key 中映射的值,就删掉这个字符,然后退回去重新检查。输入 "bdacbdac" 刚好是这条链上的连续字符(b 后面是 d、d 后面是 a、a 后面是 c、c 后面是 b),于是从开头开始,前面的字符被依次删掉,到只剩 "c" 时,字符串长度为 1,不满足循环继续的条件,停止。故本题应选C。
二、非选择题(本大题共3小题,其中第13题8分,第14题8分,第15题10分,共26分)
13. 在生物学中,碱基互补配对计算互补链规则有:DNA链或RNA链C与 G相互配对,DNA链A与T相互配对,RNA链A与U相互配对,再相应处理,即是互补链。例如:DNA链“AGTCG”的互补链为“CGACT”。小明用Python设计程序,实现碱基互补配对计算互补链。
(1)RNA链“AUUGUC”的互补链是______。
(2)完善cpl函数中的程序填空,实现相应功能。
def cpl(sequ, type):
①____
dicDNA = {"A": "T", "T": "A", "G": "C", "C": "G"}
dicRNA = {"A": "U", "U": "A", "G": "C", "C": "G"}
for nt in ②____:
if type == "DNA":
ans =dicDNA[nt] + ans
elif type == "RNA":
ans = dicRNA[nt] + ans
return ans
# data中数据,如data = [["ACGTAG", "DNA"], ["GCUAGG", "RNA"]]代码略
for seq in data:
sequ, type = seq[0], seq[1]
comp = ③____
print(type, "链", sequ, "的互补链是:", comp)
【答案】(1)GACAAU
(2) ①. ans = "" ②. sequ ③. cpl(sequ, type)
【解析】
【详解】本题考查碱基互补配对规则的理解与Python自定义函数的程序补全能力。
(1)根据RNA碱基配对规则A配U、U配A、G配C、C配G,将"AUUGUC"每个碱基替换为对应互补碱基后再整体反转,得到结果GACAAU。
(2)①处后续代码使用了变量ans进行拼接操作,需要先初始化空字符串作为结果容器,所以填ans = "";②处循环需要遍历传入的碱基序列sequ中的每个碱基字符,所以填sequ;③处此处需要调用自定义的cpl函数,传入当前的碱基序列sequ和链类型type,获取计算得到的互补链结果赋值给comp,所以填cpl(sequ, type)。
14. 某高中为了丰富学生的课余生活,将增设一个最受欢迎的社团,为此学校展开了社团投票活动,投票结果存储在“社团投票.xlsx”文件中,投票情况如图a。通过数据与分析,绘制如图b所示图表。
请回答下列问题:
(1)以下代码实现在二维表中添加班级列,并将每个学生的班级存入其中。
请在①处选择选择合适的选项(多选)______
A.df. index B.range(df. index) C.len(df) D.range(len(df))
请在②处填入合适的代码______
import pandas as pd
import matplotlib. pyplot as plt #引入matplotlib绘图模块
plt. rc(' font', **{' family': 'SimHei'})' #可正常显示中文
df= pd. read excel('社团投票. xlsx')
df["班级"]=0#在最后一列增加"班级"列,该列值均为0
for i in ① :
② =(df. at[i,'"学号"])//100%100
print(df)
(2)统计各社团投票人数,并制作社团投票结果如图b,程序的方框中应填入的正确代码为______(多选,填字母)。
import matplotlib. pyplot as plt #引入matplotlib绘图模块
plt. rc(' font', **{' family': 'SimHei'})
plt. title("社团投票情况")
plt. show()
方框中的代码由下列语句中的部分语句组成:
A.df1= df.. groupby("社团", as index= False).学号. sum()
B.df1= df. groupby("社团", as index= False).学号. count()
C.df1=df1. sort values("学号", ascending= True)
D.df1=df1. sort values("学号", ascending= False)
E.plt. bar(df1.社团,df1.学号)
F.plt. bar(df1.学号,df1.社团)
(3)若要筛选出某班学生,以方便了解该班投票情况,请在④处合适的代码
bj= int(input("请输入班级:"))
df3= ④____
【答案】(1) ①. AD ②. df. at[i,"班级"]或df["班级"][i]
(2)BDE (3)df[df.班级== bj]或df[df["班级"]== bj]
【解析】
【详解】本题考查Python的pandas数据处理与matplotlib可视化相关知识点。
(1)①处的循环需要遍历DataFrame的行索引,df.index可以直接获取所有行索引,range(len(df))可以生成从0开始到总行数减1的整数序列作为循环变量i,适配后续df.at[i, ...]的按索引访问方式;选项B的range(df.index)语法错误,选项C的len(df)是整数无法直接作为for循环的可迭代对象,因此选AD。②处需要将计算得到的班级值赋值给当前行的班级列,使用df.at[i,"班级"]可以通过at方法精准定位指定行的班级列完成赋值,也可以使用df["班级"][i]的索引方式完成赋值。
(2)统计各社团投票人数需要按社团分组后对学号进行计数,对应选项B的groupby+count操作;图b的柱状图投票人数从高到低降序排列,因此需要按学号列降序排序,对应选项D;绘制柱状图时x轴为社团名称,y轴为投票人数,对应选项E的plt.bar参数设置,因此选BDE。
(3)筛选指定班级的学生,使用pandas的布尔索引,通过判断df的班级列值等于输入的bj即可筛选出对应班级的所有行,写法为df[df.班级== bj]或者df[df["班级"]== bj]。
15. 某工厂运输工件,各工件体积存储在“gj.txt”文件中,且工件体积均不超过货车最大可装载体积。为提高货车利用率,小杜利用Python编写程序代码,实现计算最少货车数量。
请回答下列问题:
(1)若各工件体积如hw = [14,11,8,5,2,1],货车最大装载体积为20,则最少需要______辆货车。
(2)实现计算最少货车数量程序代码如下,请补全空格处代码。
def read f():
a = []
#读取" gj. txt"文件中各工件体积返回a值如a=[17,13,12,11,...],代码略
def isum(x):
t =0
for i in range(len(x)):
①____
return t
vol =20 #货车最大可装载体积
hw = read_f() #读取" gj. txt"文件中各工件体积
hw_num = [0] * (vol + 1)
for num in hw:
hw_ num[num]= ②____
v=vol
s=0
while v > 0:
if hw_num[v] ==0 or s ==0:
v = v − 1
s = v
elif hw_num[s] == 0 or V + s > vol
s = s − 1
else:
hw_num[v] - =1
hw_num[s] - =1
hw_num[v + s] +=1
③____
s = vol - v
print("最少需要的货车数量为:", isum(hw_num))
(3)若省略加框处代码,货车体积vol为20,则下列工件体积数据中,能检查出该程序错误的有______(单选)
A. [7, 12, 3, 8, 17, 7, 3] B. [10, 7, 8, 7, 8,, 10, 16]
C. [10, 10, 5, 14, 11, 5,18] D. [13, 3, 11, 4, 9, 4, 17]
【答案】(1)3 (2) ①. t += x[i]或其他等价答案 ②. hw_num[num]+1 ③. v = v + s 或v= vol (3)D
【解析】
【详解】本题考查贪心算法求解装箱问题的逻辑、Python程序代码补全与算法错误验证。
(1)对hw=[14,11,8,5,2,1],货车最大装载20,最优分配方案为第一辆装14+5+1=20,第二辆装11+8+2=20,共需要3辆货车。
(2)①处isum函数是统计数组x所有元素的和,循环遍历每个元素时需要累加,所以填t += x[i];②处hw_num数组用于统计对应体积的工件数量,遍历每个工件num时对应位置计数加1,所以填hw_num[num]+1;③处完成两个工件的合并操作后,需要更新v的取值,结合后续s=vol-v的逻辑,此处可以填v = v + s或者v=vol。
(3)加框条件 or (v == s and hw_num[v] == 1) 防止同一件工件和自己配对:每轮 s 从 v 开始往下找,当 s 降到等于 v 时,若该体积的工件只剩 1 件,是不能“自己装自己”的,必须跳过(s−1)。选项D中,体积 3 和 9 都只有 1 件且 ≤10。当前面的 17+3、13+4、11+9 配对完后,轮到剩下的 4:4 与 4 错误自配对 → hw_num[4] 变负 → 8、16 等被反复生成再错误配对,程序陷入死循环。故选D。
第1页/共1页
学科网(北京)股份有限公司
$