内容正文:
绝密★考试结束前
2024学年第一学期浙江星辰联盟期中联考
高二年级技术学科试题
考生须知:
1.本卷共11页满分100分,考试时间90分钟。
2.答题前,在答题卷指定区域填写班级、姓名、考场号、座位号及准考证号并填涂相应数字。
3.所有答案必须写在答题纸上,写在试卷上无效。
4.考试结束后,只需上交答题纸。
第一部分:信息技术(共50分)
一、选择题(本大题共12小题,每小题2分,共24分。每小题列出的四个备选项目中只有一个是符合题目要求的,不选,多选,错选均不得分)
1. 下列关于数据与信息的说法正确的是( )
A. 计算机中的数据都以ASCII码存储 B. 信息可由一种形态转变为另一种形态
C. 数据是主观的,为科学研究提供了可靠依据 D. 信息会因为被别人获取而发生损耗
2. 下列关于计算机信息编码的描述,正确的是( )
A. 字符“A”的ASCII码值比字符“a”的ASCII码值大 B. 扫码是一个编码的过程
C. 声音采样频率越高,存储容量越小 D. 每个汉字的输入码是不唯一的
3. 图像a为一张分辨率为200*300,256色BMP图像文件,图像b为一张分辨率为200*300,24位的BMP图像文件。则图像a与图像b的容量之比为( )
A. 3:1 B. 1:6 C. 1:3 D. 8:1
4. 有关数据安全,下列说法正确的是( )
A. 建立异地容灾系统,是为了保证存储介质的安全 B. 对数据加密,保证了数据的完整性
C. 对数据进行校验,提高了数据的安全性 D. 将数据存储在云盘,就能保证数据的绝对安全
5. 下列表达式的运算结果不等于7的是( )
A. len("8+12=20") B. 768//100%10 C. round(6.678) D. abs(-15//2)
6. 下列选项中,与流程图功能相同的是( )
A
if x>0:
y=1
else:
y=-1
B.
y=1
if x<0:
y=-1
C.
if x<0:
y=-1
y=1
D.
if x<0:
y=-1
if y>0:
y=1
A. A B. B C. C D. D
7. 有如下python程序段:
a="20241120"
lst=["21","22","23","24"]
lst[1]=a[-2::]
print(lst)
执行该程序段后,输出结果是( )
A. ["21","21","23","24"] B. ["21","20","23","24"] C. ["20","22","23","24"] D. ["21","22","20","24"]
8. 有如下python程序段
import pandas as pd
weekday=["星期一","星期二","星期三","星期四","星期五"]
temp=[22,25,26,28,21]
s=pd.Series(temp,index=weekday)
s[3]=19
print(s[s<25])
执行该程序段后,输出结果是( )
A. B. C. D.
9. 如果正整数n各个位上的数字之和是3的倍数,那么说明这数能被3整除。编写如下程序段:
n=int(input("请输入一个正整数:"))
s=0
t=0
while ① :
②
③
s=s+t
if s%3==0:
print("能被3整除")
else:
print("不能被3整除")
划线处的代码由以下三部分组成:
①n=n//10 ②n>0 ③t=n%10
下列选项中,代码顺序正确的是( )
A. ①②③ B. ②①③ C. ②③① D. ③①②
10. 有如下程序段:
a=[28,32,30,36,45,24]
n=int(input("请输入一个正整数:"))
j=0
for i in range(len(a)):
if a[i] < n:
j+=1
else:
j-=1
print(j)
执行该程序段后,若输入n的值为30,则输出结果为( )
A. 0 B. -1 C. 1 D. -2
11. 有如下程序段:
import random
a=[0,0,0,0,0]
i=0
while i<len(a):
j=random.randint(1,20)
if j%2==0:
a[i]=j
else:
i=i-1
i=i+1
print(a)
执行该程序段后,输出结果不可能的是( )
A. [14,6,2,12,10] B. [8,2,4,2,20] C. [6,10,16,9,2] D. [10,12,6,20,8]
12. 某程序段如下:
s="Test-2024"
ans=""
for ch in s:
if ch>="0" and ch<="9":
ans=ans+str(int(ch)%5)
elif ch>="A" and ch<="Z":
ans+=chr(ord(ch)+32)
else:
ans=ch+ans
print(ans)
执行该程序段后,输出结果是( )
A. -TEST2024 B. 2024-tset C. -tset2024 D. -test2024
二、选择题部分(本大题共3个小题,其中第13题7分,第14题10分,第15题9分,共26分)
13. 某翻转字符串能实现句子中单词顺序的翻转。例如字符串“I,Love,Python!”,翻转后为“!Python,Love,I”,如图所示。
(1)若某句子为“nice,to,meet,you!”,经如程序翻转后的结果为____
(2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。
s=input("请输入要翻转句子:")
res=""
s1=""
for i in range(len(s)):
①____
if ch>="A" and ch<="Z" or ch>="a" and ch<="z":
s1=②____
else:
s1=""
print("翻转后的结果为:",res)
(3)加框处有误,下列选择为正确答案的是( )(单选,填字母)
A.res=s1+ch+res B.res=ch+s1+res C.res=ch+res+s1 D.res=res+ch+s1
14. 小王对刚刚闭幕的2024年巴黎奥运会各国奖牌做了如下分析。其中地域0-代表北美洲,1-代表欧洲,2-代表亚洲,3-代表大洋洲,如图a所示,请回答下列问题:
图a 图b
(1)读取excel文件中的数据赋值给df,划线处的代码为____(单选,填字母)。
import pandas as pd
df=pd. ("奥运会奖牌.xls")
A.read_excel B.to_excel C.read.excel D.to.excel
(2)若要统计各国奖牌数总和
以下代码能实现统计各国奖牌数总和的是( )(多选,填字母)
A.df["总计"]=df.sum( )
B.df["总计"]=df.sum(axis=1)
C.df["总计"]=df["金牌"]+df["银牌"]+df["铜牌"]
D.
df["总计"]=0
for i in df.index:
a=df.at[i,"金牌"]
b=df.at[i,"银牌"]
c=df.at[i,"铜牌"]
df.at[i"总计"]=a+b+c
(3)筛选出欧洲奖牌总数最多的国家,其中地域0-代表北美洲,1-代表欧洲,2-代表亚洲,3-代表大洋洲,请在划线处的填入合适代码。
df1=df[____]
df2=df1.sort_values("总计",ascending=False).head(1)
(4)按地域分组,绘制各地域奖牌总数柱形图如图b所示,请在划线处的填入合适代码。
df3=df.groupby("①____",as_index=True).sum()
dy=["北美洲","欧洲","亚洲","大洋洲"]
plt.xlabel("地域")
plt.ylabel("总计")
plt.title("各地域奖牌总计")
plt.bar(x,y)
plt.show()
程序加框处得应填入得正确代码为____(单选,填字母)
A.
x=df1.index
y=df2.总计
B.
x=dy
y=df3.总计
C.
x=df.地域
y=df3.总计
D.
x=df1.index
y=df3.总计
(5)如图b所示,地域奖牌数最多的是____。
15. 小明记录一周德育考核情况,0分表示一般,1分表示良好,2分表示优秀,现编写程序,查询考核总分等于k的连续时间段。某一周的德育考核情况为:“2,0,2,1,2,1,2”,k的值为6的连续时间段为第2天~第6天,第3天~第6天,第4天~第7天,共3个时间段满足要求。如图所示,回答下列问题:
(1)若某一周的德育考核情况为:“1,2,0,2,1,1,0”,k的值为6的连续时间段有____个
(2)查找列表a中考核总分等于k的连续时间段,并统计时间段个数部分Python程序如下,请在划线处填入合适的代码。
def find_lst(a,k):
pos=[[]for i in range(sum(a)+1)] #初始化列表
pos[0]append(-1)
lst=[] #存储符合条件的子序列
①____
count=0
for i in range(len(a)):
cur_sum+=a[i]
pre_sum=②____
if pre_sum>=0:
for j in pos[pre_sum]:
lst.append([j+1,i])#标记考核总分等于k的连续时间段的索引位置
③____
pos[cur_sum].append(i)
return count,lst
#输出符合条件的时间段
def print_lst(a,lst):
for start,end in lst:
print(f"考核分序列:{a[start:end+1]}(时间段为第{start+1}天到第{end+1}天)")
(3)主程序,请在划线处填入合适的代码。
#获取用户输入
a=[int(x)for x in input("请输入考核分数:").split()]
k=int(input("请输入考核总分:"))
#查找符合考核总分的时间段以及数量
count,lst=____
#输出结果
print(f"
找到{count}个考核总分为{k}的子序列:")
print_lst(a,lst)
第1页/共1页
学科网(北京)股份有限公司
$$
绝密★考试结束前
2024学年第一学期浙江星辰联盟期中联考
高二年级技术学科试题
考生须知:
1.本卷共11页满分100分,考试时间90分钟。
2.答题前,在答题卷指定区域填写班级、姓名、考场号、座位号及准考证号并填涂相应数字。
3.所有答案必须写在答题纸上,写在试卷上无效。
4.考试结束后,只需上交答题纸。
第一部分:信息技术(共50分)
一、选择题(本大题共12小题,每小题2分,共24分。每小题列出的四个备选项目中只有一个是符合题目要求的,不选,多选,错选均不得分)
1. 下列关于数据与信息的说法正确的是( )
A. 计算机中的数据都以ASCII码存储 B. 信息可由一种形态转变为另一种形态
C. 数据是主观的,为科学研究提供了可靠依据 D. 信息会因为被别人获取而发生损耗
【答案】B
【解析】
【详解】本题考查数据与信息相关内容。A选项,计算机中的数据都以二进制形式存储,选项说法错误。B选项,信息能够在不同的载体、不同的表现形式之间相互转变,即可以由一种形态转变为另一种形态,选项说法正确。C选项,数据是客观存在的,它是对客观事物的记录和描述,通过对客观的数据进行分析、处理等操作,才能为科学研究提供可靠依据,选项说法错误。D选项,信息具有共享性,不会因为被别人获取而发生损耗,选项说法错误。故本题答案是B选项。
2. 下列关于计算机信息编码的描述,正确的是( )
A. 字符“A”的ASCII码值比字符“a”的ASCII码值大 B. 扫码是一个编码的过程
C. 声音采样频率越高,存储容量越小 D. 每个汉字的输入码是不唯一的
【答案】D
【解析】
【详解】本题考查编码。D选项正确,汉字输入码是指用户通过键盘等输入设备输入汉字时所使用的编码。例如,“中” 这个汉字,可以通过拼音 “zhong” 输入,也可以通过五笔输入法的 “khl” 等编码输入。所以每个汉字的输入码是不唯一的,A选项错误,在 ASCII 码表中,字符 “A” 的十进制 ASCII 码值是 65,字符 “a” 的十进制 ASCII 码值是 97。所以字符 “A” 的 ASCII 码值比字符 “a” 的 ASCII 码值小,B选项错误,扫码是一个解码的过程。条形码或二维码中存储了特定的信息,通过扫码设备读取这些图形信息,这是提取内容的过程,即解码,而不是编码过程,C选项错误,根据音频存储容量的计算公式 :存储容量=采样频率*量化位数*声道数*时间可知,当其他条件(量化位数、声道数、时间)不变时,采样频率越高,存储容量越大。因此本题选择D。
3. 图像a为一张分辨率为200*300,256色的BMP图像文件,图像b为一张分辨率为200*300,24位的BMP图像文件。则图像a与图像b的容量之比为( )
A. 3:1 B. 1:6 C. 1:3 D. 8:1
【答案】C
【解析】
【详解】本题考查图像文件容量的计算。图像a为256色BMP图像,每像素用8位表示(因为256=2^8),其容量为200*300*8位。图像b为24位BMP图像,每像素用24位表示,其容量为200*300*24位。两者容量之比为(200*300*8)/(200*300*24)=8/24=1/3。故答案为:C。
4. 有关数据安全,下列说法正确的是( )
A. 建立异地容灾系统,是为了保证存储介质的安全 B. 对数据加密,保证了数据的完整性
C. 对数据进行校验,提高了数据的安全性 D. 将数据存储在云盘,就能保证数据的绝对安全
【答案】A
【解析】
【详解】本题考查数据安全的相关概念。选项B错误,因为数据加密主要是为了确保数据的机密性,而不是完整性。数据完整性通常是通过校验和、哈希值等技术来保证的。选项C错误,校验可以提高数据的完整性,但并不是直接提高数据的安全性。选项D错误,云盘提供的是数据存储服务,但不能保证数据的绝对安全,因为数据仍然可能受到网络攻击、访问控制不当等问题的影响。故答案为:A。
5. 下列表达式的运算结果不等于7的是( )
A. len("8+12=20") B. 768//100%10 C. round(6.678) D. abs(-15//2)
【答案】D
【解析】
【详解】本题考查Python表达式。-15//2先进行整数除法,结果为-8,然后abs(-8)计算绝对值,结果为8,不等于7。故答案为:D。
6. 下列选项中,与流程图功能相同的是( )
A.
if x>0:
y=1
else:
y=-1
B.
y=1
if x<0:
y=-1
C.
if x<0:
y=-1
y=1
D.
if x<0:
y=-1
if y>0:
y=1
A. A B. B C. C D. D
【答案】B
【解析】
【详解】本题考查流程图。流程图的功能是根据条件判断x的值来确定y的值。如果x小于0,则y被赋值为-1;否则,y为1。选项B的代码逻辑与此相同,即如果x小于0,y被赋值为-1,否则y保持为1。故答案为:B。
7. 有如下python程序段:
a="20241120"
lst=["21","22","23","24"]
lst[1]=a[-2::]
print(lst)
执行该程序段后,输出结果是( )
A. ["21""21","23","24"] B. ["21","20","23","24"] C. ["20","22","23","24"] D. ["21","22","20","24"]
【答案】B
【解析】
【详解】本题考查python语言基础。B选项正确,a[-2::] 表示从字符串 a 的倒数第二个字符开始,一直到字符串末尾的所有字符。 那么字符串 a 的倒数第二个字符是 “2”,从这个字符开始到末尾的字符组成的子字符串就是 “20”。 接着执行 lst[1] = a[-2::],这一步是将通过切片操作得到的子字符串 “20” 赋值给列表 lst 中的第二个元素(注意列表索引从 0 开始,所以 lst[1] 表示第二个元素)。 原本列表 lst = [“21”, “22”, “23”, “24”],经过上述赋值操作后,列表 lst 的第二个元素被替换为 “20”,所以最终输出的列表 lst 为 [“21”, “20”, “23”, “24”]。因此本题选择B。
8. 有如下python程序段
import pandas as pd
weekday=["星期一","星期二","星期三","星期四","星期五"]
temp=[22,25,26,28,21]
s=pd.Series(temp,index=weekday)
s[3]=19
print(s[s<25])
执行该程序段后,输出结果是( )
A. B. C. D.
【答案】B
【解析】
【详解】本题考查pandas数据处理。B选项正确,程序先定义了一个包含一周工作日名称的列表 weekday,以及一个对应每天温度值的列表 temp。然后,使用 pandas 库的 Series 函数将温度列表 temp 和工作日名称列表 weekday 关联起来,创建了一个 Series 对象 s,其中工作日名称作为索引,温度值作为数据。接着,修改了 s 中索引为 3(对应星期四)的温度值为 19。最后,通过条件筛选出 s 中温度值小于 25 的元素并输出,因此,输出了三行满足条件的数据。因此本题选择B。
9. 如果正整数n各个位上的数字之和是3的倍数,那么说明这数能被3整除。编写如下程序段:
n=int(input("请输入一个正整数:"))
s=0
t=0
while ① :
②
③
s=s+t
if s%3==0:
print("能被3整除")
else:
print("不能被3整除")
划线处的代码由以下三部分组成:
①n=n//10 ②n>0 ③t=n%10
下列选项中,代码顺序正确的是( )
A. ①②③ B. ②①③ C. ②③① D. ③①②
【答案】C
【解析】
【详解】本题考查Python。首先,我们需要遍历每个数字的每一位,所以条件②n>0应该放在循环的判断条件位置;其次,t=n%10应该先执行以获取当前位的数字,所以③应在①之前;最后,n=n/10用于移动到下一位数字,应放在最后。因此,正确的顺序是②③①。故答案为:C。
10. 有如下程序段:
a=[28,32,30,36,45,24]
n=int(input("请输入一个正整数:"))
j=0
for i in range(len(a)):
if a[i] < n:
j+=1
else:
j-=1
print(j)
执行该程序段后,若输入n的值为30,则输出结果为( )
A. 0 B. -1 C. 1 D. -2
【答案】D
【解析】
【详解】本题考查循环控制和条件判断。题目中有一个列表a包含六个整数。程序首先要求用户输入一个正整数n,然后通过一个循环遍历列表a中的每个元素a[i],判断其是否小于n。如果a[i]小于n,变量j增加1,否则j减少1。给定n=30,我们可以逐步分析:当i=0时,a[0]=28,28小于30,所以j变为1。当i=1时,a[1]=32,32大于等于30,所以j变为0。当i=2时,a[2]=30,30等于30,所以j变为-1。当i=3时,a[3]=36,36大于30,所以j变为-2。当i=4时,a[4]=45,45大于30,所以j变为-3。当i=5时,a[5]=24,24小于30,所以j变为-2。因此,循环结束后,j的值为-2。故答案为:D。
11. 有如下程序段:
import random
a=[0,0,0,0,0]
i=0
while i<len(a):
j=random.randint(1,20)
if j%2==0:
a[i]=j
else:
i=i-1
i=i+1
print(a)
执行该程序段后,输出结果不可能的是( )
A. [14,6,2,12,10] B. [8,2,4,2,20] C. [6,10,16,9,2] D. [10,12,6,20,8]
【答案】C
【解析】
【详解】本题考查循环结构的程序实现。C选项正确,程序通过一个 while 循环来遍历列表 a 的每个位置(索引从 0 到 len(a) - 1)。在循环内部,每次会生成一个 1 到 20 之间的随机整数 j。 如果 j 是偶数(通过 j % 2 == 0 判断),就将这个偶数赋值给列表 a 中当前索引 i 对应的位置。 如果 j 是奇数,就会执行 i = i - 1,也就是让索引回退一位,然后再执行 i = i + 1,相当于当前这次循环如果生成的是奇数,就会在当前索引位置重新进行一次循环操作(因为先回退再前进,索引位置不变),直到生成的随机数是偶数并赋值给列表 a 对应的位置为止。所以生成的列表中不可能存在奇数元素,C选项中有元素为奇数。因此本题选择C。
12. 某程序段如下:
s="Test-2024"
ans=""
for ch in s:
if ch>="0" and ch<="9":
ans=ans+str(int(ch)%5)
elif ch>="A" and ch<="Z":
ans+=chr(ord(ch)+32)
else:
ans=ch+ans
print(ans)
执行该程序段后,输出结果是( )
A -TEST2024 B. 2024-tset C. -tset2024 D. -test2024
【答案】C
【解析】
【详解】本题考查python程序设计。C选项正确,程序通过for循环遍历给定字符串 s 中的每个字符,每次循环中,当字符是数字字符,程序会将该数字字符转换为整数,然后对其除以 5取余数,再将结果转换回字符串并添加到 ans 的末尾。 当字符是大写字母字符,程序会先通过 ord() 函数获取该大写字母的 ASCII 码值,然后将其加上 32,再通过 chr() 函数将得到的新 ASCII 码值转换为对应的小写字母字符,并添加到 ans 的末尾。 当字符不满足上述两种情况时,也就是遇到其他字符(如小写字母,标点符号等),程序会直接将该字符添加到 ans 的开头。因此,当s为“Test-2024”时,大写字母“T”会转换为“t”顺序被添加到ans中,而小写字母和符号“est-”会被依次逆序添加到ans开头,为“-tse”,而数字字符“2024”会取余运算依次转换为“2024”顺序被添加到ans中,因此,输出结果为:“-tse”+“t”+“2024”=“-tset2024”;因此本题选择C。
二、选择题部分(本大题共3个小题,其中第13题7分,第14题10分,第15题9分,共26分)
13. 某翻转字符串能实现句子中单词顺序的翻转。例如字符串“I,Love,Python!”,翻转后为“!Python,Love,I”,如图所示。
(1)若某句子为“nice,to,meet,you!”,经如程序翻转后的结果为____
(2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。
s=input("请输入要翻转的句子:")
res=""
s1=""
for i in range(len(s)):
①____
if ch>="A" and ch<="Z" or ch>="a" and ch<="z":
s1=②____
else:
s1=""
print("翻转后的结果为:",res)
(3)加框处有误,下列选择为正确答案的是( )(单选,填字母)
A.res=s1+ch+res B.res=ch+s1+res C.res=ch+res+s1 D.res=res+ch+s1
【答案】 ①. !you,meet,to,nice ②. ch=a[i] ③. s1+ch ④. B
【解析】
【详解】本题考查python程序设计。
①处答案为!you,meet,to,nice,按照程序的功能是翻转句子中单词的顺序,那么对于句子 “nice,to,meet,you!”,其翻转过程如下: 首先从字符串开头开始往后处理,遇到字符 “,”,此时前面的单词 “nice” 已经完整,将其添加到结果字符串的前面(因为是翻转单词顺序),接着遇到 “,”,说明单词 “to” 也完整了,同样添加到结果字符串前面,以此类推,经过处理后,翻转后的结果应该是 “!you,meet,to,nice”。
②处答案为ch = s[i],在循环遍历输入字符串 s 时,需要逐个获取字符串中的字符,所以这里应该填入 ch = s[i],用于获取当前位置的字符。
③处答案为s1+ch,当遇到字母字符(大写或小写)时,说明正在处理一个单词中的字符,需要将这个字符添加到当前正在构建的单词字符串 s1 中。由于是从前往后处理字符串,所以应该将当前字符添加到 s1 的末尾,这样才能正确构建出每个单词。所以这里应该填入s1+ch。
④处答案为B,在程序的逻辑中,当遇到非字母字符(如标点符号)时,说明一个单词已经处理完毕,此时需要将这个完整的单词添加到结果字符串 res 的前面,以实现单词顺序的翻转。 前面构建好的单词存储在 s1 中,当前遇到的分隔字符存储在 ch 中,为了将单词和分隔字符按照正确的顺序添加到 res 中,并且实现翻转效果,应该先添加分隔字符 ch,再添加单词是s1,最后再加上之前已经构建好的结果字符串 res。
14. 小王对刚刚闭幕的2024年巴黎奥运会各国奖牌做了如下分析。其中地域0-代表北美洲,1-代表欧洲,2-代表亚洲,3-代表大洋洲,如图a所示,请回答下列问题:
图a 图b
(1)读取excel文件中的数据赋值给df,划线处的代码为____(单选,填字母)。
import pandas as pd
df=pd. ("奥运会奖牌.xls")
A.read_excel B.to_excel C.read.excel D.to.excel
(2)若要统计各国奖牌数总和
以下代码能实现统计各国奖牌数总和的是( )(多选,填字母)
A.df["总计"]=df.sum( )
B.df["总计"]=df.sum(axis=1)
C.df["总计"]=df["金牌"]+df["银牌"]+df["铜牌"]
D.
df["总计"]=0
for i in df.index:
a=df.at[i,"金牌"]
b=df.at[i,"银牌"]
c=df.at[i,"铜牌"]
df.at[i,"总计"]=a+b+c
(3)筛选出欧洲奖牌总数最多的国家,其中地域0-代表北美洲,1-代表欧洲,2-代表亚洲,3-代表大洋洲,请在划线处的填入合适代码。
df1=df[____]
df2=df1.sort_values("总计",ascending=False).head(1)
(4)按地域分组,绘制各地域奖牌总数柱形图如图b所示,请在划线处的填入合适代码。
df3=df.groupby("①____",as_index=True).sum()
dy=["北美洲","欧洲","亚洲","大洋洲"]
plt.xlabel("地域")
plt.ylabel("总计")
plt.title("各地域奖牌总计")
plt.bar(x,y)
plt.show()
程序加框处得应填入得正确代码为____(单选,填字母)
A.
x=df1.index
y=df2总计
B.
x=dy
y=df3.总计
C.
x=df.地域
y=df3.总计
D.
x=df1.index
y=df3.总计
(5)如图b所示,地域奖牌数最多的是____。
【答案】 ①. A ②. CD ③. df["地域"] == 1 ④. 地域 ⑤. B ⑥. 欧洲
【解析】
【详解】本题考查pandas数据处理。
①处答案为A,读取 Excel 文件的函数是 read_excel。其基本用法是 pd.read_excel(“文件名.xls”)。
②处答案为CD;选项 A:df[“总计”] = df.sum() 这种写法是错误的。sum() 函数默认是按列进行求和,如果要统计每行的总和(即各国奖牌数总和),需要指定 axis=1 参数,表示按行方向进行求和操作,所以 A 选项不能实现统计各国奖牌数总和。 选项 B:df[“总计”] = df.sum(axis=1) ,这里通过指定 axis=1,表示按行对数据进行求和操作,由于A列是国家名称不能参与总和,会报错。 选项 C:df[“总计”] = df[“金牌”] + df[“银牌”] + df[“铜牌”] ,通过将每个国家的金牌数、银牌数和铜牌数相加,也能够得到每个国家(即每行)的奖牌数总和,所以 C 选项可以实现统计各国奖牌数总和。 选项 D:通过循环遍历 df 的每一行,分别获取每个国家的金牌数、银牌数和铜牌数并相加,然后将结果赋值给新的列 总计,同样可以实现统计各国奖牌数总和的功能,所以 D 选项可以实现统计各国奖牌数总和。 综上,能实现统计各国奖牌数总和的是 CD。
③处答案为df[“地域”] == 1,要筛选出欧洲的国家,需要根据地域列的值为 1 来进行筛选。所以,df1 = df[df[“地域”] == 1]。
④处答案为地域,这里是要按照地域列对数据进行分组,并对每组内的数据进行求和操作。
⑤处答案为B,x = dy 这里 dy 是定义好的地域名称列表 ["北美洲", "欧洲", "亚洲", "大洋洲"],y = df3.总计,df3 是按地域分组并求和后的数据,其中总计列就是各地域的奖牌总数,这样的赋值可以正确绘制出各地域奖牌总数的柱形图。
⑥处答案为欧洲,通过柱形的高度可以直观地看出哪个地域的奖牌数最多,在图中应该是代表欧洲的柱形最高,所以地域奖牌数最多的是欧洲。
15. 小明记录一周德育考核情况,0分表示一般,1分表示良好,2分表示优秀,现编写程序,查询考核总分等于k的连续时间段。某一周的德育考核情况为:“2,0,2,1,2,1,2”,k的值为6的连续时间段为第2天~第6天,第3天~第6天,第4天~第7天,共3个时间段满足要求。如图所示,回答下列问题:
(1)若某一周的德育考核情况为:“1,2,0,2,1,1,0”,k的值为6的连续时间段有____个
(2)查找列表a中考核总分等于k的连续时间段,并统计时间段个数部分Python程序如下,请在划线处填入合适的代码。
def find_lst(a,k):
pos=[[]for i in range(sum(a)+1)] #初始化列表
pos[0].append(-1)
lst=[] #存储符合条件的子序列
①____
count=0
for i in range(len(a)):
cur_sum+=a[i]
pre_sum=②____
if pre_sum>=0:
for j in pos[pre_sum]:
lst.append([j+1,i])#标记考核总分等于k的连续时间段的索引位置
③____
pos[cur_sum].append(i)
return count,lst
#输出符合条件的时间段
def print_lst(a,lst):
for start,end in lst:
print(f"考核分序列:{a[start:end+1]}(时间段为第{start+1}天到第{end+1}天)")
(3)主程序,请在划线处填入合适的代码。
#获取用户输入
a=[int(x)for x in input("请输入考核分数:").split()]
k=int(input("请输入考核总分:"))
#查找符合考核总分的时间段以及数量
count,lst=____
#输出结果
print(f"
找到{count}个考核总分为{k}的子序列:")
print_lst(a,lst)
【答案】 ①. 3 ②. cur_sum = 0 ③. cur_sum - k ④. count+= 1 ⑤. find_lst(a, k)
【解析】
【详解】本题考查python程序设计。①处答案为3。某一周的德育考核情况为:“1,2,0,2,1,1,0”,k的值为6的连续时间段为第一天到第五天,第二天到第六天,第二天到第七天。
②处答案为 cur_sum = 0;在进入循环累加考核分数之前,需要先初始化一个变量来记录当前累加的考核分数总和,所以这里应该填入 cur_sum = 0。
③处答案为cur_sum - k;在每次循环中,当我们遍历到列表 a 中的某个位置 i 时,此时已经计算出了从开头到位置 i 的累加和 cur_sum。 现在要判断在当前位置 i 之前,是否存在某个起始位置 j,使得从 j + 1 到 i 这个连续时间段的考核总分等于 k。 那么我们可以这样思考:假设存在这样一个起始位置 j,从开头到 j 的累加和是 pre_sum,从开头到 i 的累加和是 cur_sum。 因为我们希望找到连续时间段的考核总分等于 k 的情况,所以就有这样的等式关系:cur_sum - pre_sum = k(也就是从 j + 1 到 i 的累加和等于 k)。 那么为了找到这个可能的 pre_sum,我们就可以通过当前的 cur_sum 减去 k 来得到,即 pre_sum = cur_sum - k。
④处答案为 count += 1;当找到一个满足考核总分等于的连续时间段后,需要对满足条件的时间段个数进行计数,所以这里应该填入 count += 1。
⑤处答案为 find_lst(a, k);在主程序中,需要调用 find_lst 函数来查找符合考核总分的时间段以及数量,所以应该填入 find_lst(a, k)。
第1页/共1页
学科网(北京)股份有限公司
$$