内容正文:
2024学年第二学期知恩中学(桃源书院)期中考试
高一技术学科 试题卷
考生须知:
1.本卷满分100分,考试时间90分钟;
2.答题前,在答题卷指定区域填写班级、姓名、考场、座位号及准考证号(填涂):
3.所有答案必须写在答题卷上,写在试卷上无效;
第一部分:信息技术(共50分)
一、单项选择题(共12题,每题2分,共24分)
1. 下列关于数据与信息的说法,不正确的是( )
A. 同一信息可以依附于不同的载体
B. 不同格式的数据在计算机中都以二进制的形式存储
C. 编码后的数据一般以文件形式存储于计算机中
D. 只有数字化后的信息才能进行处理
2. 有一段通话记录录音时长为30秒,采样频率为44.1kHz,若采用双声道音频文件形式存储,则下列说法中正确的是( )
A. 可以将通话记录压缩成MP3 格式进行存储
B. 该录音音频的保真度只受到采样频率的影响
C. 该录音音频最终存储成经过编码后的十进制数字
D. 若量化位数8位,则未压缩前该音频存储容量约为9.6MB
3. 下列关于大数据的描述,正确的是( )
A. 在大数据时代,数据的主要来源依靠人力
B. 大数据不强调事物之间的因果关系,更注重它们的相关性
C. 大数据“速度快”的特征,仅仅是指数据产生的速度快
D. 大数据不再追求精确性,只需要分析部分抽样数据即可
4. 下列关于人工智能的说法不正确的是( )
A. 深度学习不需要事先手工构造知识库
B. 强化学习是基于问题引导下的人工智能方法
C. 人工智能目前无法完全替代人类作用
D. AlphaGo从围棋跨界到电力控制领域,属于混合增强智能
5. 队列Q从队首到队尾的元素依次为1、3、5、2、4,栈S初始为空。约定:若栈为空或者队首元素大于栈顶元素,那么队首元素入栈;否则,把栈内所有大于队首元素的元素依次出栈并入队,再把队首元素入栈。反复执行上述操作,直到队列为空,则栈S中从栈顶到栈底的元素依次为( )
A. 1、3、5、2、4 B. 1、2、3、4、5 C. 5、4、3、2、1 D. 4、2、5、3、1
6. 某算法的部分流程图如下图所示。若输入n的值为20,则输出结果是( )
A. 8 B. 13 C. 21 D. 34
7. 六岁以上人群在安静状态下的正常心率通常为60~100次/分钟。低于60称为心动过缓,高于100称为心动过速。体检时将测得的某人心率存入变量 rate,下列Python 程序段不能正确输出心率状态的是( )
A. sta ="心动过缓
if rate > 100:
sta="心动过速”
elif rate<= 100:
sta =“正常”
print(sta)
B. if rate > 100:
sta ="心动过速"
elif rate< 60:
sta ="心动过缓"
else:
sta =“正常”
print (sta)
C. sta ="心动过速"
if rate< 60:
sta="心动过缓"
elif rate<= 100:
sta ="正常"
print (sta)
D. if rate< 60:
sta="心动过缓"
if rate > 100:
sta="心动过速"
if 60<=rate<= 100:
sta="正常"
print (sta)
A. A B. B C. C D. D
8. 已知元素的进栈顺序是a、b、c、d、e、f,以下出栈顺序不可能的是( )
A. a、b、c、d、e、f B. a、d、e、c、f、b C. c、d、f、e、a、b D. e、d、c、b、a、f
9. 在某一队列(非循环队列)中,使用head记录队首元素所在位置,tail记录队尾元素的下一位置,约定:T操作指队列中1个元素出队后再入队,Q操作指队列中1个元素出队,经过TTQTTQ操作后,head=6,tail=9,则在操作前队列中元素个数是( )
A. 1 B. 3 C. 5 D. 7
10. 有如下Python程序段:
s1 = "jhywdyykwydypa"; s2 = "dy"
i = 0; m = 0
while i <= len(s1) - len(s2):
if sl[i: i + len(s2)] ! = s2:
i += 1
else:
i=i + len(s2)
m += 1
该程序段执行后,m的值为( )
A. 13 B. 12 C. 11 D. 10
11. 有如下Python程序段:
s="ABCDEF";head=0;tail=0
que=[""]*10
for i in range(len(s)):
if i %2 == 0:
que[tail]=s[len(s)-1-i]
else:
que[tail]=s[i-1]
tail=tail+1
for i in range(len(s)):
print(que[head],end="")
head=head+1
该程序运行后输出的结果为( )
A. FAEBDC B. FADCBE C. FBDDBF D. FDBACE
12. 使用列表d模拟链表结构(节点数大于0),每个节点包含数据区域和指针区域,head 指向链表的头节点。现要删除链表中倒数第k个节点,实现该功能的部分 Python 程序段如下:
def delend(head, k) :
if head ==-1 or k<= 0:
return head
p=q= head
t=0
while t<k and p !=-1:
p = d[p][1]
t +=1
if t< k:
return head
if p==-1:
return d[head][1]
while ;
p=d[p] [1]
m=d[q][1]
d[q][1]= d[m][1]
return head
d=[[1,3],[5,2],[8,4],[3,1],[9,5],[6,-1]]
head = 0
k= int(input("请输入 k的值:"))
new_head = delend(head, k)
#输出数据处理结果,代码略
则划线中应填入的正确代码依次为( )
①p ! = - 1 ②d [ p ] [ 1 ]! = - 1 ③q = p ④q = d [ q ] [ 1 ]
A. ①③ B. ①④ C. ②③ D. ②④
二、程序填空题(每空2分,共26分)
13. 某校政教处每周进行寝室内务检查,从“床铺打理”等5个方面进行评分,每项20分,满分100分。高一年级内务检查扣分情况部分界面如图a所示,每项扣分范围为0至9分。
寝室号
班级
床铺打理
物品整理
环境清扫
垃圾分类
寝室美化
总分
1101
高一(1)班
-6
-1
-6
-3-2
1102
高一(1)班
-5
-2
-1
-6-5
1103
高一(1)班
-0
-1
-5
-2-1
2101
高一(1)班
-1
-4
-3
-6-0
1609
高一(10)班
-2
-0
-1
-4-0
1610
高一(10)班
-0
-3
-5
-2-0
2608
高一(10)班
-0
-6
-6
-5-3
2609
高一(10)班
-6
-1
-1
-6-5
2610
高一(10)班
-1
-5
-2
-5-6
图a
(1)整理数据时,误将“垃圾分类”和“寝室美化”两列的分数录在同一列,为纠正该错误,并计算各寝室的总分,编写如下Python程序,请在划线处填入合适的代码。
import pandas as pd
import matplotlib.pyplot as plt
df=pd.read_excel("data.xlsx")
for i in df.index: #DataFrame 的行索引
①____
df.at[i,"垃圾分类" ] = k[0:2]
df.at[i,"寝室美化"]=k[2:]
s=100
for j in df.columns[2:7]:#存放各列的列标题
s = s + int(df.at[i,j])
df.at[j,"总分"] =②___
(2)统计各班级所有寝室总分的均分情况,找到年级前3名,并制作图表。
x=df2.班级
y = df2.总分
plt.bar(x,y,label="班级均分情况")
#设置给图参数,显示如图b所示的柱形图,代码略
图b
方框中应填入的语句依次为________(选3项,填数字序列)。
①df1=df. sort_values("总分",ascending=True)#升序排序
②df1=df1.sort_values("总分",ascending=False)#降序排序
③dfl=df. groupby("班级",as_index=False).mean()#分组求平均
④df2=dfl. head(3)#获取前3条数据
(3)观察图a可知,每个班级都配有多个寝室。现要筛选出“高一(2)班”各个寝室的扣分情况,以便进一步分析,可在第(1)小题处理结果的基础上,再运行如下语句,请在划线处填入合适的代码。
df3 = df [_____________]
14. 将计算机中的二进制图像压缩为数字字符串,压缩方法如下:若连续相同的二进制数的数量不超过9,则用两个数字字符表示,前一个表示数量,后一个表示该二进制数;若数量超过9,则数量中间用“-”连接(假设数量不超过99)。例如某图像的部分压缩结果为“21301-21”,则解压为“11000111111111111”。实现解压功能的Python程序如下,请在划线处填入合适的代码。
s=input("输入图像压缩后数字字符串:")
st="";i=0
n=(1)____
while i < n-1:
if s[i+1] != "-":
(2)____
else:
count=int(s[i]+s[i+2])
i=i+2
for j in range(count):
st=st+s[i+1]
(3)____
print("解压后的数据为:",st)
15. 某医院某体检项目由于设备有限,实行预约制度。该设备只在每天上午7点到8点开放(若8点有患者在体检等结束再关闭),患者需提前一天在系统填写预约时间(预约时间为7-8点),如下图所示,此项目每人用时间相同,预约系统根据预约信息尽可能为多的患者完成体检。处理过程分两步:
①按预约时间顺序体检。若出现预约时间在前一患者体检结束前,则修改此患者预约时间至前一患者结束时。如:某项目每人检查时间为10分钟,前一患者在07:30体检,下一患者预约时间为07:35,则此患者预约时间改为07:40。
②剩余未成功预约患者按预约时间顺序插入空闲时间段。根据原预约时间顺序将剩余患者插入到空闲时间段,若空用时长不足则无法插入。
程序运行界面如图所示,请回答下列问题
(1)某天的患者预约时间为hz=["07:20","07:30","07:35","07:50","07:55","07:55"],该体检项目每人需要15分钟,则最多成功预约体检的患者数量为_____________。
(2)有函数 trans(s,f)的代码如下:
def trans(s,f):
if f==0:
return int(s[:2])*60 + int (s[-2:])
else:
h=str(s//60);m=str(s%60)
if len(h)=1:
h = "0"+ h
if len(m)==1:
m="0"+m
return h+":"+m
若s = 465 ,f = 1 ,调 trans(s,f)后,返回的结果是_________
(3)实现预约处理的Python程序如下,请在划线处填入合适的代码。
#导入预约时间列表hz并升序排列,代码略
#步骤一,按时间顺序预约体检
m=int(input("请输入项目时长:"))
k = 0; kx=[]
curtime, endtime =trans("07:00",0),trans("08:00",0)
while k<len(hz) and curtime<endtima:
①___
if tl<curtime:
print(k+1,"号修改预约时间",trans(curtime,1))
else:
print(k+1,"号预约时间",trans(t1,1),"成功")
kx. append (ourtime) #将curtime放到列表 kx的末尾
kx. append(t1- curtime) #将t1-curtime放到列表 kx的末尾
②___
curtime+= m
k+=1
#步骤二,剩余患者插入空闲时间
c=0
while③___
t2 = kx[c+1]
if t2<m:
c+=2
continue
else:
print(k+1"号修改预约时间",trans(kx[c],1))
if t2 > m:
④___
kx[c+1]-= m
else:
c+=2
k+=1
#输出最多预约人数、未预约成功人员等信息,代码略
第1页/共1页
学科网(北京)股份有限公司
$$
2024学年第二学期知恩中学(桃源书院)期中考试
高一技术学科 试题卷
考生须知:
1.本卷满分100分,考试时间90分钟;
2.答题前,在答题卷指定区域填写班级、姓名、考场、座位号及准考证号(填涂):
3.所有答案必须写在答题卷上,写在试卷上无效;
第一部分:信息技术(共50分)
一、单项选择题(共12题,每题2分,共24分)
1. 下列关于数据与信息的说法,不正确的是( )
A. 同一信息可以依附于不同的载体
B. 不同格式的数据在计算机中都以二进制的形式存储
C. 编码后的数据一般以文件形式存储于计算机中
D. 只有数字化后的信息才能进行处理
【答案】D
【解析】
【详解】本题考查数据与信息。A 选项正确,同一信息可依附于不同载体,如文字可通过纸张、屏幕等呈现。 B 选项正确,计算机中数据均以二进制形式存储,无论格式如何(文本、图像等)。 C 选项正确,编码后的数据常以文件形式(如.txt、.jpg)存储于计算机。 D 选项错误,信息处理不局限于数字化信息。例如,人工统计分析(非数字化)也属于信息处理,只是方式不同。数字化处理更高效,但并非唯一途径。因此,本题选择 D 选项。
2. 有一段通话记录录音时长为30秒,采样频率为44.1kHz,若采用双声道音频文件形式存储,则下列说法中正确的是( )
A 可以将通话记录压缩成MP3 格式进行存储
B. 该录音音频的保真度只受到采样频率的影响
C. 该录音音频最终存储成经过编码后的十进制数字
D. 若量化位数为8位,则未压缩前该音频存储容量约为9.6MB
【答案】A
【解析】
【详解】本题考查的是音频编码。选项A正确,MP3是一种常见的有损压缩音频格式,可将原始音频压缩存储,因此可以将通话记录压缩为MP3格式;选项B错误,音频保真度不仅受采样频率影响,还与量化位数密切相关。采样频率决定声音的频率范围,量化位数决定振幅精度,二者共同影响保真度; 选项C错误,计算机存储采用二进制编码,而非十进制;选项D错误,计算存储容量公式为: 容量 = 采样频率 × 量化位数 × 声道数 × 时间 ÷ 8(B) ,代入数据: 44.1 × 1000 × 8 × 2 × 30 ÷ 8 = 2646000 字节 ≈ 2.52 MB 。故选A。
3. 下列关于大数据的描述,正确的是( )
A. 在大数据时代,数据的主要来源依靠人力
B. 大数据不强调事物之间的因果关系,更注重它们的相关性
C. 大数据“速度快”的特征,仅仅是指数据产生的速度快
D. 大数据不再追求精确性,只需要分析部分抽样数据即可
【答案】B
【解析】
【详解】本题考查大数据的基本特征与概念。A 选项错误,大数据时代数据主要来源于物联网设备、传感器、社交媒体等自动或半自动生成的渠道,而非人力为主。 B 选项正确,大数据分析更注重事物间的相关性(如关联分析),而非传统的因果关系推导,这是大数据的核心特征之一。 C 选项错误,大数据 “速度快”(Velocity)不仅指数据产生速度快,还包括数据处理、分析和响应的实时性要求(如流数据处理)。 D 选项错误,大数据强调对全体数据(而非抽样数据)的分析。 因此,本题选择 B 选项。
4. 下列关于人工智能的说法不正确的是( )
A. 深度学习不需要事先手工构造知识库
B. 强化学习是基于问题引导下的人工智能方法
C. 人工智能目前无法完全替代人类的作用
D. AlphaGo从围棋跨界到电力控制领域,属于混合增强智能
【答案】D
【解析】
【详解】本题考查的是人工智能。混合增强智能是将人的作用或人的认知模型引入到人工智能系统中,以弥补人工智能的不足。AlphaGo从围棋人工智能跨界到电力控制领域属于跨领域人工智能。故本题应选D。
5. 队列Q从队首到队尾的元素依次为1、3、5、2、4,栈S初始为空。约定:若栈为空或者队首元素大于栈顶元素,那么队首元素入栈;否则,把栈内所有大于队首元素的元素依次出栈并入队,再把队首元素入栈。反复执行上述操作,直到队列为空,则栈S中从栈顶到栈底的元素依次为( )
A. 1、3、5、2、4 B. 1、2、3、4、5 C. 5、4、3、2、1 D. 4、2、5、3、1
【答案】C
【解析】
【详解】本题考查栈和队列。
按照题目中的约定步骤:
1. 初始队列为1, 3, 5, 2, 4,栈为空。队首元素1入栈,栈为1。
2. 队列变为3, 5, 2, 4。队首元素3大于栈顶元素1,3入栈,栈为1, 3。
3. 队列变为5, 2, 4。队首元素5大于栈顶元素3,5入栈,栈为1, 3, 5。
4. 队列变为2, 4。队首元素2小于栈顶元素5,将5出栈并入队,队列变为2, 4, 5。然后2小于栈顶元素3,将3出栈并入队,队列变为2, 4, 5, 3。最后2大于栈顶元素1,将2出队并入栈,队列变为4, 5, 3。此时栈为1,2。
5. 重复上述操作,可以发现题干实现的目的是将队列中的元素经过一系列操作后有序放入到栈中,栈底到栈顶呈升序,即从栈顶到栈底的元素顺序为5, 4, 3, 2, 1。故选C。
6. 某算法的部分流程图如下图所示。若输入n的值为20,则输出结果是( )
A. 8 B. 13 C. 21 D. 34
【答案】B
【解析】
【详解】本题考查流程图。初始化:输入 n=20,设置 m=1,a=1,b=1。
第一次循环:a=1<20,条件为真。m%2=1%2=1,条件为真,执行 b=a+b=1+1=2,m=m+1=2。
第二次循环:a=1<20,条件为真。m%2=2%2=0,条件为假,执行 a=a+b=1+2=3,m=m+1=3。
第三次循环:a=3<20,条件为真。m%2=3%2=1,条件为真,执行 b=a+b=3+2=5,m=m+1=4。
第四次循环:a=3<20,条件为真。m%2=4%2=0,条件为假,执行 a=a+b=3+5=8,m=m+1=5。
第五次循环:a=8<20,条件为真。m%2=5%2=1,条件为真,执行 b=a+b=8+5=13,m=m+1=6。
第六次循环:a=8<20,条件为真。m%2=6%2=0,条件为假,执行 a=a+b=8+13=21,m=m+1=7。
退出循环:判断 a=21<20,条件为假,退出循环,输出 b即13。
因此,本题选择B选项。
7. 六岁以上人群在安静状态下的正常心率通常为60~100次/分钟。低于60称为心动过缓,高于100称为心动过速。体检时将测得的某人心率存入变量 rate,下列Python 程序段不能正确输出心率状态的是( )
A. sta ="心动过缓
if rate > 100:
sta="心动过速”
elif rate<= 100:
sta =“正常”
print(sta)
B. if rate > 100:
sta ="心动过速"
elif rate< 60:
sta ="心动过缓"
else:
sta =“正常”
print (sta)
C. sta ="心动过速"
if rate< 60:
sta="心动过缓"
elif rate<= 100:
sta ="正常"
print (sta)
D. if rate< 60:
sta="心动过缓"
if rate > 100:
sta="心动过速"
if 60<=rate<= 100:
sta="正常"
print (sta)
A. A B. B C. C D. D
【答案】A
【解析】
【详解】本题考查分支结构程序实现。A选项,当rate=50时,elif条件成立,sta为正常,与题意不符。因此本题选择A选项。
8. 已知元素的进栈顺序是a、b、c、d、e、f,以下出栈顺序不可能的是( )
A. a、b、c、d、e、f B. a、d、e、c、f、b C. c、d、f、e、a、b D. e、d、c、b、a、f
【答案】C
【解析】
【详解】本题考查栈操作相关内容。栈的特点是后进先出。进栈顺序是a、b、c、d、e、f,分析四个选项,ABD选项为可能的出栈序列。C选项,c先出栈,说明a、b均在栈内,c、d、f、e出栈顺序正确,但a不可能先于b出栈。故本题答案是C选项。
9. 在某一队列(非循环队列)中,使用head记录队首元素所在位置,tail记录队尾元素的下一位置,约定:T操作指队列中1个元素出队后再入队,Q操作指队列中1个元素出队,经过TTQTTQ操作后,head=6,tail=9,则在操作前队列中元素个数是( )
A. 1 B. 3 C. 5 D. 7
【答案】C
【解析】
【详解】本题考查队列。每个T操作都有有一个新元素入队,一个元素出队,每个Q操作都会有一个元素出队,每入队一个元素,tail+=1,每出队一个元素,head+=1,经过TTQTTQ的操作后,有4个元素入队,6个元素出队,即操作前,head=0,tail=5,队列中有5个元素。因此,本题选择C。
10. 有如下Python程序段:
s1 = "jhywdyykwydypa"; s2 = "dy"
i = 0; m = 0
while i <= len(s1) - len(s2):
if sl[i: i + len(s2)] ! = s2:
i += 1
else:
i=i + len(s2)
m += 1
该程序段执行后,m的值为( )
A. 13 B. 12 C. 11 D. 10
【答案】C
【解析】
【详解】本题考查循环结构的程序实现。初始化变量 i 为 0,m 为 0。 进入 while 循环,只要 i 小于等于 len(s1) - len(s2) ,循环就会继续。 在每次循环中,使用切片 s1[i: i + len(s2)] 来截取与 s2 长度相同的子串。 如果截取的子串不等于 s2,则将 i 加 1 继续检查下一个位置。如果截取的子串等于 s2,则将 i 增加 len(s2) 的长度,跳过已匹配的部分。每次循环无论是否匹配,m 都会加 1。因此从i=0至i=4;循环5次,m=5;此时找到第一个匹配字串,跳过字符y;从i=6至i=10;循环5次,m=10;此时找到第二个匹配字串,跳过字符y;接着i=12;循环1次;m=11;i=13,循环结束。因此,本题选择C。
11. 有如下Python程序段:
s="ABCDEF";head=0;tail=0
que=[""]*10
for i in range(len(s)):
if i %2 == 0:
que[tail]=s[len(s)-1-i]
else:
que[tail]=s[i-1]
tail=tail+1
for i in range(len(s)):
print(que[head],end="")
head=head+1
该程序运行后输出的结果为( )
A. FAEBDC B. FADCBE C. FBDDBF D. FDBACE
【答案】B
【解析】
【详解】本题考查Python程序设计相关内容。分析程序段,推知:
程序段通过两个循环实现对字符串的处理与输出。第一个循环根据索引的奇偶性,将字符串中的字符按特定规则存入列表que中,第二个循环按顺序输出列表que中的字符。
执行第一个for循环:当i=0时,que值为:['F', '', '', '', '', '', '', '', '', ''];当i=1时,que值为:['F', 'A', '', '', '', '', '', '', '', ''];当i=2时,que值为:['F', 'A', 'D', '', '', '', '', '', '', ''];当i=3时,que值为:['F', 'A', 'D', 'C', '', '', '', '', '', ''];当i=4时,que值为:['F', 'A', 'D', 'C', 'B', '', '', '', '', ''];当i=5时,que值为:['F', 'A', 'D', 'C', 'B', 'E', '', '', '', '']。
执行第二个for循环:i取值范围是[0, 5],输出列表que中的前6个字符,即:FADCBE。
故本题答案B选项。
12. 使用列表d模拟链表结构(节点数大于0),每个节点包含数据区域和指针区域,head 指向链表的头节点。现要删除链表中倒数第k个节点,实现该功能的部分 Python 程序段如下:
def delend(head, k) :
if head ==-1 or k<= 0:
return head
p=q= head
t=0
while t<k and p !=-1:
p = d[p][1]
t +=1
if t< k:
return head
if p==-1:
return d[head][1]
while ;
p=d[p] [1]
m=d[q][1]
d[q][1]= d[m][1]
return head
d=[[1,3],[5,2],[8,4],[3,1],[9,5],[6,-1]]
head = 0
k= int(input("请输入 k的值:"))
new_head = delend(head, k)
#输出数据处理结果,代码略
则划线中应填入的正确代码依次为( )
①p ! = - 1 ②d [ p ] [ 1 ]! = - 1 ③q = p ④q = d [ q ] [ 1 ]
A. ①③ B. ①④ C. ②③ D. ②④
【答案】D
【解析】
【详解】本题考查的是链表。第一个划线处条件: 此处需要确保p移动到链表的最后一个节点(即d[p][1] == -1)。循环条件应为d[p][1] != -1(选项②),表示当p的下一个节点存在时,继续移动。这样,当循环结束时,p指向倒数第一个节点,q指向倒数第k+1个节点。第二个划线处代码: 在循环中,q需要跟随p同步移动,以保持两者的间距为k。每次p移动后,q应通过q = d[q][1](选项④)指向下一个节点。最终,q会停在待删除节点的前驱位置,完成删除操作。故选D。
二、程序填空题(每空2分,共26分)
13. 某校政教处每周进行寝室内务检查,从“床铺打理”等5个方面进行评分,每项20分,满分100分。高一年级内务检查扣分情况部分界面如图a所示,每项扣分范围为0至9分。
寝室号
班级
床铺打理
物品整理
环境清扫
垃圾分类
寝室美化
总分
1101
高一(1)班
-6
-1
-6
-3-2
1102
高一(1)班
-5
-2
-1
-6-5
1103
高一(1)班
-0
-1
-5
-2-1
2101
高一(1)班
-1
-4
-3
-6-0
1609
高一(10)班
-2
-0
-1
-4-0
1610
高一(10)班
-0
-3
-5
-2-0
2608
高一(10)班
-0
-6
-6
-5-3
2609
高一(10)班
-6
-1
-1
-6-5
2610
高一(10)班
-1
-5
-2
-5-6
图a
(1)整理数据时,误将“垃圾分类”和“寝室美化”两列的分数录在同一列,为纠正该错误,并计算各寝室的总分,编写如下Python程序,请在划线处填入合适的代码。
import pandas as pd
import matplotlib.pyplot as plt
df=pd.read_excel("data.xlsx")
for i in df.index: #DataFrame 行索引
①____
df.at[i,"垃圾分类" ] = k[0:2]
df.at[i,"寝室美化"]=k[2:]
s=100
for j in df.columns[2:7]:#存放各列的列标题
s = s + int(df.at[i,j])
df.at[j,"总分"] =②___
(2)统计各班级所有寝室总分的均分情况,找到年级前3名,并制作图表。
x=df2.班级
y = df2总分
plt.bar(x,y,label="班级均分情况")
#设置给图参数,显示如图b所示的柱形图,代码略
图b
方框中应填入的语句依次为________(选3项,填数字序列)。
①df1=df. sort_values("总分",ascending=True)#升序排序
②df1=df1.sort_values("总分",ascending=False)#降序排序
③dfl=df. groupby("班级",as_index=False).mean()#分组求平均
④df2=dfl. head(3)#获取前3条数据
(3)观察图a可知,每个班级都配有多个寝室。现要筛选出“高一(2)班”各个寝室的扣分情况,以便进一步分析,可在第(1)小题处理结果的基础上,再运行如下语句,请在划线处填入合适的代码。
df3 = df [_____________]
【答案】 ①. k = str(df.at[i,"寝室美化"]) ②. s ③. ③②④ ④. df["班级"] == "高一(2)班"
【解析】
【详解】本题考查的是Python数据分析。
(1)①由于“垃圾分类”和“寝室美化”两列被误存到同一列,可先用k = str(df.at[i,“寝室美化”])读取出该字符串,然后 df.at[i,“垃圾分类”] = k[0:2] ,df.at[i,“寝室美化”] = k[2:] 即可分别得到两个扣分值,故此处为:k = str(df.at[i,"寝室美化"]);②计算总分时,先用s=100,然后依次把每列扣分值(int类型)加到s(这时因为扣分为负,实际上是在减分)。循环结束后,df.at[i,“总分”] = s 即可,故此处应为:s。
(2)统计各班总分均值并取前三名。先按班级分组求各班“总分”的平均值,第③条(dfl = df.groupby(“班级”, as_index=False).mean());然后将分组结果按总分降序排序,第②条(df1 = dfl.sort_values(“总分”, ascending=False));最后取总分排在前3名的班级,便于绘制柱形图,第④条(df2 = df1.head(3))。故答案为:③②④。
(4)若要筛选出“高一(2)班”各寝室扣分情况,可在上一步处理好的 df 基础上再执行: df3 = df[ df[“班级”] == “高一(2)班” ]。
14. 将计算机中的二进制图像压缩为数字字符串,压缩方法如下:若连续相同的二进制数的数量不超过9,则用两个数字字符表示,前一个表示数量,后一个表示该二进制数;若数量超过9,则数量中间用“-”连接(假设数量不超过99)。例如某图像的部分压缩结果为“21301-21”,则解压为“11000111111111111”。实现解压功能的Python程序如下,请在划线处填入合适的代码。
s=input("输入图像压缩后的数字字符串:")
st="";i=0
n=(1)____
while i < n-1:
if s[i+1] != "-":
(2)____
else:
count=int(s[i]+s[i+2])
i=i+2
for j in range(count):
st=st+s[i+1]
(3)____
print("解压后的数据为:",st)
【答案】 ①. len(s) ②. count=int(s[i]) ③. i=i+2 或 i+=2
【解析】
【详解】本题考查的是python字符串处理。①处,需要获取压缩字符串的长度以控制循环终止条件,故此处应为:len(s);②处,当下一个字符不是“-”时,直接获取当前字符表示的数量。因为数量单独用一个字符表示,故此处应为:count=int(s[i]);③处,由于此时处理两个字符作为一个压缩单元,因此需要对索引增加 2 来跳过这两个字符,故此处应为:i=i+2 或 i+=2。
15. 某医院某体检项目由于设备有限,实行预约制度。该设备只在每天上午7点到8点开放(若8点有患者在体检等结束再关闭),患者需提前一天在系统填写预约时间(预约时间为7-8点),如下图所示,此项目每人用时间相同,预约系统根据预约信息尽可能为多的患者完成体检。处理过程分两步:
①按预约时间顺序体检。若出现预约时间在前一患者体检结束前,则修改此患者预约时间至前一患者结束时。如:某项目每人检查时间为10分钟,前一患者在07:30体检,下一患者预约时间为07:35,则此患者预约时间改为07:40。
②剩余未成功预约的患者按预约时间顺序插入空闲时间段。根据原预约时间顺序将剩余患者插入到空闲时间段,若空用时长不足则无法插入。
程序运行界面如图所示,请回答下列问题
(1)某天的患者预约时间为hz=["07:20","07:30","07:35","07:50","07:55","07:55"],该体检项目每人需要15分钟,则最多成功预约体检的患者数量为_____________。
(2)有函数 trans(s,f)的代码如下:
def trans(s,f):
if f==0:
return int(s[:2])*60 + int (s[-2:])
else:
h=str(s//60);m=str(s%60)
if len(h)=1:
h = "0"+ h
if len(m)==1:
m="0"+m
return h+":"+m
若s = 465 ,f = 1 ,调 trans(s,f)后,返回的结果是_________
(3)实现预约处理的Python程序如下,请在划线处填入合适的代码。
#导入预约时间列表hz并升序排列,代码略
#步骤一,按时间顺序预约体检
m=int(input("请输入项目时长:"))
k = 0; kx=[]
curtime, endtime =trans("07:00",0),trans("08:00",0)
while k<len(hz) and curtime<endtima:
①___
if tl<curtime:
print(k+1,"号修改预约时间",trans(curtime,1))
else:
print(k+1,"号预约时间",trans(t1,1),"成功")
kx. append (ourtime) #将curtime放到列表 kx的末尾
kx. append(t1- curtime) #将t1-curtime放到列表 kx的末尾
②___
curtime+= m
k+=1
#步骤二,剩余患者插入空闲时间
c=0
while③___
t2 = kx[c+1]
if t2<m:
c+=2
continue
else:
print(k+1,"号修改预约时间",trans(kx[c],1))
if t2 > m:
④___
kx[c+1]-= m
else:
c+=2
k+=1
#输出最多预约人数、未预约成功人员等信息,代码略
【答案】 ①. 4 ②. 07:45 ③. t1=trans (hz[k],0) ④. curtime=t1 ⑤. k < len(hz) and c < len(kx) ⑥. kx[c] += m
【解析】
【详解】本题考查的是数组应用。
(1)由题意可知,07:20,预约成功;07:30,修改到 07:35;07:35,修改到 07:50;07:50,修改到 07:00 ;剩余 2 个未预约成功,所以答案为 4。
(2)对于 s = 465 和 f = 1: h = s // 60 = 7,m = s % 60 = 45。由于 len(h) == 1 成立,h 为07。由于 len(m) == 1 不成立,m 保持为 45。 最终结果是 07:45。
(3)①处,该处将当前 k 索引对应的预约时间 hz[k] 转换为分钟数,以便后续与 curtime 比较和处理,因此该空答案为 t1 = trans(hz[k],0)。②处,当预约时间 t1 >= 当前时间 curtime,则用预约时间来安排预约,该处更新 curtime 为当前预约时间 t1,因此该空答案为 curtime = t1 。 ③处,该处是 while 循环的条件,当未处理完预约且还有空闲时间时,将剩余患者插入空闲时间。因此该空答案为k < len(hz) and c < len(kx)。 ④处,该处当空闲时间 t2 大于项目时长 m 时,更新起始空闲时间为加上项目时长后的时间,因此该空答案为 kx[c] += m。
第1页/共1页
学科网(北京)股份有限公司
$$