内容正文:
浙江省金砖联盟2024学年第一学期期中联考
高二年级技术学科 试题
考生须知:
1.本卷满分100分,考试时间90分钟;
2.答题前,在答题卷指定区域填写班级、姓名、考场号、座位号及准考证号并填涂相应数字。
3.所有答案必须写在答题卷上,写在试卷上无效;
4.考试结束后,只需上交答题卷。
一、信息技术部分(50分)
一、选择题(共12题,每题2分,共24分)
1. 下列关于数据、信息说法正确的是( )
A. 信息的价值会随着时间的变化而消失 B. 信息是数据经过储存、分析及解释后产生的意义
C. 模拟信号经过采样和量化转换成二进制数据 D. 为了验证数据的安全性可以进行数据校验操作
【答案】B
【解析】
【详解】本题考查数据与信息的基本概念。A选项错误,信息的价值会随着时间的变化而增加或减少,而不是消失;B选项正确,信息是数据经过加工、处理和解释后产生的意义;C选项错误,模拟信号转化为二进制数字信号通常需要经过取样、量化和编码三个步骤;D选项错误,数据校验是验证数据完整性的一种重要手段,用于检测数据传输或存储过程中是否出现错误。故答案为:B。
2. 下列关于大数据说法不正确的是( )
A. 大数据处理采用分治的思想 B. 大数据产生的速度很快,导致体量庞大,处理速度不要求快
C. 对于台风路径的实时数据,我们可以使用流计算 D. 大数据不再追求数据的精确性,能够接受数据的混杂性
【答案】B
【解析】
【详解】本题考查大数据。B选项,大数据产生的速度很快,导致体量庞大,并且处理速度也要很快。在很多实际应用场景中,如金融交易监控、实时交通流量分析等,数据的价值往往是有时效性的,如果不能快速处理大数据,就无法及时利用这些数据来做出有效的决策。A选项,大数据处理采用分治的思想。分治思想是将一个复杂的大数据问题分解为多个相对简单的子问题,分别对这些子问题进行处理,然后将结果合并起来。C选项,对于台风路径的实时数据,我们可以使用流计算。流计算是一种处理实时数据的计算模式,它可以对源源不断产生的数据流(如台风路径的实时监测数据)进行快速处理和分析,及时提供最新的信息,例如及时发布台风预警等,D选项,大数据不再追求数据的精确性,能够接受数据的混杂性。在大数据环境下,数据来源广泛,数据量巨大,很难保证所有数据都是精确无误的。因此本题选择B。
3. 下列关于人工智能说法正确的是( )
A. 联结主义需要事先手工构造知识库和推理引擎
B. 扫地机器人是数据驱动下的人工智能应用
C. “沃森”从益智游戏移植到医疗领域属于跨领域人工智能
D. 混合增强人工智能中机器智能是智能回路的总开关
【答案】C
【解析】
【详解】本题考查人工智能。C选项正确,“沃森” 从益智游戏移植到医疗领域属于跨领域人工智能。A选项错误,联结主义不需要事先手工构造知识库和推理引擎。联结主义主要基于神经网络,通过大量的数据训练来自动学习知识和模式,强调的是通过神经元之间的连接和信号传递来实现智能,与符号主义中手工构建知识库和推理引擎的方式不同,B选项错误,扫地机器人是问题引导下的人工智能应用,扫地机通过不断从环境中学习,与环境进行交互,从而提升自己的智能水平。D选项错误,在混合增强人工智能中,人类智能是智能回路的总开关。因此本题选择C。
4. 小明在校艺术节的时候录制了一首3分钟的立体声音频上交参评,录制时采样频率为44.1kHz,量化位数为16bit,该音频未经压缩时容量约为( )
A. 3MB B. 0.5MB C. 15MB D. 30MB
【答案】D
【解析】
【详解】本题考查音频文件的大小计算。音频文件的容量计算公式为:容量 = 采样频率 × 量化位数 × 声道数 × 时间。题目中采样频率为44.1kHz,即44100Hz,量化位数为16bit(即2字节),音频为立体声(2声道),时间为3分钟(180秒)。代入公式:容量 = 44100 × 2 × 2 × 180 = 31752000字节 ≈ 31.75MB。未压缩音频容量约为30MB。故答案为:D。
5. 下列关于数据结构说法正确的是( )
A. 不同的数据结构其处理效率是相同的 B. 链表能使用数据的位置信息访问任意节点
C. 计算机中的文件夹管理采用“树形”结构 D. 队列是一种“先进后出”的数据结构
【答案】C
【解析】
【详解】本题考查数据结构的基本概念和特点。A选项错误,不同的数据结构因为其组织方式和操作方式不同,处理效率通常也会不同。例如,数组在随机访问时效率高,而链表在插入和删除操作时效率高。B选项错误,链表是通过每个节点的指针或引用访问的,而不是通过数据的位置信息访问。数组才是通过索引(位置信息)访问的。C选项正确,计算机中的文件系统常用树形结构来组织和管理文件和文件夹,根目录是树的根节点,子目录和文件则是树的分支和叶子。D选项错误,队列是一种“先进先出”(FIFO)的数据结构,而“先进后出”是栈(Stack)的特点。故答案为:C。
6. 某算法流程图如图所示,下列说法不正确的是( )
A. 该算法使用了循环结构 B. 该算法输出时s值为236
C. 该算法执行完后“n>0?”共执行了3次 D. 该算法执行完后i值为3
【答案】C
【解析】
【详解】本题考查流程图。C选项,该流程图为循环结构,当循环条件n>0时,循环体反复执行,n初值为632,循环体中,n的值为n//10,因此,n的值依次为632,63,2,0,循环条件“n>0?”共执行4次。A选项,因为有语句反复被执行,所以该算法使用循环结构,B选项,s=s*10+n%10;因此,s其实是在实现倒序n,为236。D选项,n的值依次为632,63,2,0,当循环条件成立时,i=i+1;循环条件成立三次,因此i=0+1+1+1=3。因此本题选择C。
7. 下列表达式值最大的为( )
A. 123%10**2-123//10 B. len(range(1,20,3)) C. randint(1,20)-10 D. (ord("D")-ord("a"))*3
【答案】A
【解析】
【详解】本题考查运算符优先级和函数的使用。A选项123%10**2-123//10的值为23-12=11,因为123%10**2计算余数为23,而123//10计算整除部分为12;B选项len(range(1,20,3))的值为7,因为range(1,20,3)表示从1开始,每次加3,直至小于20,生成序列[1,4,7,10,13,16,19],长度为7;C选项randint(1,20)-10的值为一个随机整数减去10,范围为-9到10,因此值具有随机性,无法确定具体大小;D选项(ord("D")-ord("a"))*3的值为(-29)*3=-87,因为ord("D")=68,ord("a")=97,差值为-29,乘以3得-87。比较所有选项的结果,值最大的为A选项,其结果为11。故答案为:A。
8. 台风的风力等级是根据其中心附近的最大风速来划分,风速为32.7~41.4米/秒则风力等级为“台风”,风速为41.5~50.9米/秒则风力等级为“强台风”,风速为51.0米/秒或以上则风力等级为“超强台风”。现输入一个风速x(x≥32.7,且只含1位小数),下列python代码段不能根据上述信息正确划分这3个台风风力等级的是( )
A.
x=float(input(":"))
if x<=41.4:
dj = "台风"
elif x<=50.9:
dj="强台风"
else:
dj="超强台风"
print(dj)
B.
x=float(input(":"))
if x<=41.4:
dj = "台风"
if 41.5<=x<=50.9:
dj="强台风"
else:
dj="超强台风"
print(dj)
C.
x=float(input(":"))
dj="台风"
if x>50.9:
dj = "超强台风"
elif x>=41.5:
dj="强台风"
print(dj)
D.
x=float(input(":"))
dj="强台风"
if x<=41.4:
dj = "台风"
if x>51.0:
dj = "超强台风"
print(dj)
A. A B. B C. C D. D
【答案】B
【解析】
【详解】本题考查Python程序。选项B:同样先获取输入风速x。先判断x<=41.4时设为“台风”,接着又判断41.5<=x<=50.9时设为“强台风”,但这里的问题在于当x<=41.4不成立时,直接进入后面的else语句会将大于41.4的所有情况(包括41.5<=x<=50.9和x>50.9)都设为“超强台风”,而没有正确区分“强台风”和“超强台风”的情况,所以该选项不能正确划分风力等级。故答案为:B。
9. 若某个栈的深度为3,a,b,c,d,e依次入栈,则下列出栈顺序不可能的是( )
A. abcde B. acdbe C. cbaed D. bedca
【答案】D
【解析】
【详解】本题考查栈。栈是后进先出的,即最后进入栈的元素最先出栈。D选项,若要实现b最先出栈,那么在b入栈前a已经入栈,此时栈内元素从栈底到栈顶依次为a、b,然后b出栈;接着e要出栈,就需要e先入栈,在e入栈之前,c、d也需要依次入栈,此时栈内元素从栈底到栈顶依次为 a、c、d、e,和栈的深度为3不符合,因此,该选项不可能。A选项,依次将a入栈,然后a出栈;接着b入栈,b出栈;以此类推,按照入栈顺序入栈一个元素,然后紧接着出栈一个元素,所以此选项有可能。B选项,首先a入栈,a出栈;然后b、c依次入栈,c出栈;接着d入栈,d出栈;b出栈;最后e入栈,e出栈,所以该选项可能。C选项,先将a、b、c依次入栈,此时栈内元素从栈底到栈顶依次为a、b、c,然后c出栈,b出栈,a出栈;接着d、e入栈,最后e出栈,d出栈;所以此选项也有可能。因此本题选择D。
10. 有如下python代码段:
s1="aabbcabba";s2="ab"
result="";i=0
while i<=len(s1)-len(s2):
if s1[i:i+len(s2)]!=s2:
result+=s1[i]
i=i+1
else:
i=i+len(s2)
print(result)
执行该代码段后,result的值为( )
A. "abcb" B. "abcba" C. "cb" D. "cba"
【答案】A
【解析】
【详解】本题考查循环结构的程序实现。A选项正确,通过一个while循环来遍历字符串s1,循环的条件是i<=len(s1)-len(s2),确保在遍历过程中不会超出s1的有效范围,每次循环,首先通过切片操作s1[i:i+len(s2)]获取从索引i开始,长度为len(s2)的子字符串,并与s2进行比较。如果不相等,说明当前位置不存在与s2匹配的子字符串,那么就将当前位置的字符s1[i]添加到result中,然后将索引i增加1,继续检查下一个位置。如果相等,说明找到了与s2匹配的子字符串,此时将索引i直接增加len(s2),跳过这个匹配的子字符串,继续检查后面的位置。因此,此函数功能为将s1中与s2相等的子串删除,并且由于i在循环条件成立时,最多能取到索引为len(s1)-len(s2)的位置,因此,s1中最后一个字符一定不可能被添加进result中,所以程序执行后,result为“abcb”。因此本题选择A。
11. 现有两个降序的链表lst1,lst2,要将链表lst2中的数据合并到链表lst1中,保持lst1的有序性,python代码段如下:
lst1=[[49,1],[35,2],[23,-1]];lst2 =[[48,1],[34,2],[25,-1]]
h1=h2=0;pre=p=h1;q=h2
while q! =-1:
if p!=-1 and ① :
pre=p
p=lst1[p][1]
else:
lst1append( ② )
if p==h1:
pre=h1=len(lst1)-1
else:
lst1[pre][1]= ③
pre=len(lst1)-1
q=lst2[q][1]
上述程序段中可选填的语句为:
①[lst2[p][0],q] ② lst1[p][0]<= lst2[q][0] ③lst1[p][0]>= lst2[q][0] ④[lst2[q][0],p] ⑤q ⑥len(lst1)-1
则划线处填写的语句依次为( )
A. ③④⑤ B. ③④⑥ C. ③①⑥ D. ②④⑥
【答案】B
【解析】
【详解】本题考查Python程序。对于①处:程序是要将链表 lst2 中的数据合并到降序的链表 lst1 中,当 lst1 中当前节点的值大于等于 lst2 中要插入节点的值时,就继续往后遍历 lst1,所以此处应填lst1[p][0]>= lst2[q][0],即③。 对于②处:当不满足①处条件时,也就是要将 lst2 中的节点插入到 lst1 中,插入的节点应该是包含 lst2 当前节点的值以及下一个要继续在 lst1 中比较的节点位置(即当前 lst1 中节点的位置 p),所以应填[lst2[q][0],p],即④。 对于③处:当插入的节点成为新的头节点时(即p==h1),要更新头节点 h1 的位置为新插入节点的位置也就是len(lst1) - 1;当不是头节点插入情况时,要更新前一个节点(pre)的下一个节点指向为新插入节点的位置,同样也是len(lst1) - 1,所以这里应填len(lst1) - 1,即⑥。故答案为:B。
12. python代码段如下:
from random import randint
lst=[0]*6
for i in range(6):
lst[i]=randint(2,8)*2+1
for i in range(5):
if i%2==0 and lst[i]>lst[i+1]:
lst[i],lst[i+1]=lst[i+1],lst[i]
else:
lst[i]+=1
执行该代码段后,lst中可能的值是( )
A. [7,13,9,6,13,6] B. [10,10,6,18,11,14] C. [5,10,12,6,12,8] D. [5,12,6,16,5,17]
【答案】D
【解析】
【详解】本题考查循环结构的程序实现。D选项正确,通过第一个for循环,随机产生6个5(当randint返回2时)到17(当randint返回8时)之间的奇数赋值给lst中的每一个元素。第二个for循环,每次循环中,若当前索引i为偶数且当前元素大于后一个元素,则交换两数;否则,即当前索引i为奇数或当前元素小于等于后一个元素,则将当前元素的值增加1。因此,lst一定满足以下条件①当索引i为偶数,即0,2,4时,必然满足a[i]<=a[i+1],②当索引i为1,3时,由于此时一定执行else分支,因此该索引对应的元素会加1,a[i]为偶数③当索引i为5时,由于第二个for循环此时已经结束,a[5]的值不会改变,必定为奇数。D选项符合要求。A选项错误,第二个元素索引为13,这是不可能的,因为,在第二个for循环中,i=1,必然执行else分支,奇数加1必然为偶数。B选项错误,最后一个元素为14,这是不可能的,最后一个元素若是通过与前一个元素交换而来,那必然是奇数,若是未和前一个元素交换,由于第二个for循环,i=4,循环结束,索引为5的第六个元素不会发生改变,仍然是奇数。C选项错误,索引为2的元素为12,索引为3的元素为6,这是不可能的,因为当索引为2且该元素大于后一个数,必然要交换两个数。因此本题选择D。
二、填空题(共3题,共26分。13题7分,14题9分,15题10分)
13. 小明在学习了数的编码后,他用python编写了一个程序,可以实现不同进制的加法运算,加数可以是二进制数(B)、十进制数(D)、十六进制数(H)。如输入的算式为“1101B+2AH=”,则输出结果为“和为,55”。
(1)输入的算式为“1011B+3DH=”,则输出结果为____
(2)python代码如下,请在划线处填入合适代码,完善功能。
s=input("请输入算式:")
def convert(ch):
result=0
dic={"B":2,"D":10,"H":16}
jz=①____
for i in range(len(ch)-1):
if "A"<=ch[i]<="F":
result=result*jz+②____
else:
result=result*jz+int(ch[i])
return result
temp=""
sum=0
for i in range(len(s)):
if s[i]== "+" or s[i]=="=":
sum=sum+convert(temp)
③____
else:
temp=temp+s[i]
print("和为:",sum)
【答案】 ①. 和为:72 ②. dic[ch[-1]]或dic[ch[len(ch)-1]] ③. ord(ch[i])-55或ord(ch[i])-ord("A")+10 ④. temp=""
【解析】
【详解】本题考查python程序设计。①处答案为和为:72,根据题中例子可知,该程序可以实现不同进制的加法运算,并将最后的十进制结果输出,因此先将1011B这个二进制按权展开转换为十进制数为1*8+1*2+1*4=11;然后将十六进制数按权展开转换为十进制数为3*16+13*1=61;两数相加和为72。
②处答案为dic[ch[-1]]或dic[ch[len(ch)-1]] ,在函数convert 中,需要根据输入的数的进制标识来确定转换时所使用的进制。通过字典dic可以获取到相应的进制值,这里应该根据输入字符ch的最后一个字符(即进制标识)来确定进制,所以应填入dic[ch[-1]]或dic[ch[len(ch)-1]]。
③处答案为ord(ch[i])-55或ord(ch[i])-ord("A")+10,当遇到十六进制数中的A到F字符时,需要将其转换为对应的十进制数值进行计算。在十六进制中,A代表10,B代表11,以此类推,F代表15。所以当字符ch[i]在A到F范围内时,需要将其转换为对应的十进制数,即ord(ch[i])-55或ord(ch[i])-ord("A")+10。
④处答案为temp="",在循环遍历输入的字符串s时,当遇到+或=字符时,说明已经完成了一个数的转换并累加到总和sum中,此时需要将临时存储当前数的字符串temp清空,以便后续存储下一个数。
14. 某次技术周练后,王老师在登记了学生的成绩(部分数据如图1),成绩文件名为“周练成绩.xlsx”。现王老师想通过python编程处理学生成绩并分析:计算每个学生的技术总成绩;然后根据总成绩计算每个学生的名次;最后计算出各班技术总成绩的平均分并做成如图2的图表。
图1 图2
(1)读取表格数据,计算每个学生的总分。代码如下,请在划线①②处填入合适代码。
import pandas as pd
import matplotlib.pyplot as plt
df=pd.read_excel("①____ ")
plt.rcParams['font.sans-serif']=['SimSun'] #图表显示中文
for i in df.index:
df.at[i,"总分"]=②____
(2)删除缺考同学的数据(总分为0的学生),计算每个学生的排名,代码如下。
df2=① #删除缺考学生数据
for i in df2.index:
mc=1
for j in df2.index:
if df2.at[i,"总分"]<df2.at[j,"总分"]:
mc+=1
df2.at[i"名次"]=mc
请在划线①处填入合适代码( )(单选,填字母)
Adf[df["总分"]!=0] B.df["总分"!=0] C.df["总分"]!=0 D.df[df["总分"]]!=0
(3)计算各班技术总成绩的平均分并做成如图2的图表。代码如下,请在划线①②处填入合适代码。
df3=df2.①____ ("班级",as_index=False).mean()
x=df3.班级
y=②____
plt.bar(x,y)
plt.title("周练各班均分")
plt.xticks(x) #设置x轴刻度
plt.yticks(range(0101,20)) #设置y轴刻度
plt.show()
【答案】 ①. 周练成绩.xlsx ②. df.at[i, "信息"]+df.at[i, "通用"] ③. A ④. groupby ⑤. df3.总分
【解析】
【详解】本题考查pandas处理数据。①处答案为周练成绩.xlsx,read_excel 函数读取Excel文件时,需要在函数参数中传入要读取的文件名,根据题目可知成绩文件名为周练成绩.xlsx。
②处答案为df.at[i, "信息"]+df.at[i, "通用"],要计算每个学生的总分,需要将该学生的信息成绩和通用成绩相加。所以此处应填入df.at[i, "信息"]+df.at[i, "通用"],这样就能实现将每个学生的两部分成绩相加得到总分,并存储在新增的 “总分” 列中。
③处答案为A,要删除总分为0缺考同学的数据,可以通过筛选总分不为0的同学实现目的,筛选的格式为df对象[筛选条件],筛选条件即df["总分"]!=0。
④处答案为groupby,要计算各班技术总成绩的平均分,需要先按照“班级”列对数据进行分组,然后再计算每组的平均值,使用groupby函数实现分组操作。
⑤处答案为df3.总分,根据题意可知,绘制的柱状图y轴的数据是各班技术的平均成绩。上述程序已经分班级计算平均分并保存在df3中,技术平均成绩在“总分”列,所以此处应填入df3.总分。
15. 王老师带领同学们在操场上玩起了趣味游戏:n名同学(编号1,2,3,„,n分别表示),按照编号由小到大顺时针围成一个圆圈,马老师报一个数m(1到10之间的整数),学生从编号为1的学生开始顺时针报数,报到m的同学出列;下一名同学又从1开始报数,报数为m的同学继续出列;以此规律重复下去,直到剩下最后一位同学为止。作为幸运者,他将获得一份奖品。
(1)当n=10,m=3时,最后获奖同学的编号是____
(2)下列代码通过构造一个循环单向链表,模拟报数的过程,逐一删除报数为m的节点,直到剩下一个节点为止。请在划线处填入合适的代码。
n=int(input("请输入游戏人数:"))
m=int(input("请输入 m 值:"))
lst=[]
for i in range(n-1):
lst.append([i+1,i+1])
lst.append(①____)
head=len(lst)-1
p=head
while n>1:
for i in range(1,m):
p=lst[p][1]
out=lst[p][1]
②____
n=n-1
print("最后留下的同学的编号是:",lst[p][0])
(3)下列代码通过构造一个一维数组,模拟报数的过程,逐一删除报数为m的编号,直到剩下一个编号为止。请在划线处填入合适的代码。
n=int(input("请输入游戏人数:"))
m=int(input("请输入 m 值:"))
a=[i for i in range(1,n+1)]
k=n;j=0;p=-1
while k>1:
j=j+1;p=p+1
if j==m:
for i in range(①____):
a[i]=a[i+1]
k=k-1;j=0;p-=1
if p==k-1:
②____
print("最后留下的同学的编号是:",a[0])
【答案】 ①. 4 ②. [n,0] ③. lst[p][1]=lst[out][1] ④. p,k-1 ⑤. p=-1
【解析】
【详解】本题考查链表和数组。
①处答案为4,根据题意可知,第一次3号同学出列,第二次6号同学出列,第三次9号同学出列,第四次2号同学出列,第五次7号同学出列,第六次1号同学出列,第七次8号同学出列,第八次5号同学出列,第九次10号同学出列,因此,最后只剩下一个同学为4号。
②处答案为[n,0],在创建循环单向链表的初始阶段,需要将最后一个节点的下一个节点指向第一个节点,形成循环。前面的循环已经添加了个n-1节点,这里添加最后一个节点n,并且要设置其下一个节点指向第一个节点(索引为0),所以应填入[n,0]。
③处答案为lst[p][1]=lst[out][1],当找到要出列的同学(节点)后,需要在链表中删除该节点。这里通过调整指针来实现删除操作,即将当前节点(p)的下一个节点指向要出列节点(out)的下一个节点,所以应填入lst[p][1]=lst[out][1]。
④处答案为p,k-1,当j==m时,表示找到了报数为m的编号,此时需要将该编号之后的所有编号向前移动一位,以实现删除该编号的效果。因此,需要被重新赋值的元素索引i的范围就是从当前要删除的编号索引p开始到数组倒数第二个元素k-2,由于range函数终值是不包含的,所以此处应填入p,k-1。
⑤处答案为 p = -1,p是表示当前报数的位置索引,当p==k-1时,说明已经遍历到了数组的末尾,此时需要将p的值重新设置为-1,以便下一次循环从数组的开头继续报数。
第1页/共1页
学科网(北京)股份有限公司
$$
浙江省金砖联盟2024学年第一学期期中联考
高二年级技术学科 试题
考生须知:
1.本卷满分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. 小明在校艺术节时候录制了一首3分钟的立体声音频上交参评,录制时采样频率为44.1kHz,量化位数为16bit,该音频未经压缩时容量约为( )
A. 3MB B. 0.5MB C. 15MB D. 30MB
5. 下列关于数据结构说法正确的是( )
A. 不同数据结构其处理效率是相同的 B. 链表能使用数据的位置信息访问任意节点
C. 计算机中的文件夹管理采用“树形”结构 D. 队列是一种“先进后出”的数据结构
6. 某算法流程图如图所示,下列说法不正确的是( )
A. 该算法使用了循环结构 B. 该算法输出时s值为236
C. 该算法执行完后“n>0?”共执行了3次 D. 该算法执行完后i值为3
7. 下列表达式值最大的为( )
A. 123%10**2-123//10 B. len(range(1,20,3)) C. randint(1,20)-10 D. (ord("D")-ord("a"))*3
8. 台风的风力等级是根据其中心附近的最大风速来划分,风速为32.7~41.4米/秒则风力等级为“台风”,风速为41.5~50.9米/秒则风力等级为“强台风”,风速为51.0米/秒或以上则风力等级为“超强台风”。现输入一个风速x(x≥32.7,且只含1位小数),下列python代码段不能根据上述信息正确划分这3个台风风力等级的是( )
A.
x=float(input(":"))
if x<=41.4:
dj = "台风"
elif x<=50.9:
dj="强台风"
else:
dj="超强台风"
print(dj)
B.
x=float(input(":"))
if x<=41.4:
dj = "台风"
if 41.5<=x<=50.9:
dj="强台风"
else:
dj="超强台风"
print(dj)
C.
x=float(input(":"))
dj="台风"
if x>50.9:
dj = "超强台风"
elif x>=41.5:
dj="强台风"
print(dj)
D.
x=float(input(":"))
dj="强台风"
if x<=41.4:
dj = "台风"
if x>51.0:
dj = "超强台风"
print(dj)
A. A B. B C. C D. D
9. 若某个栈的深度为3,a,b,c,d,e依次入栈,则下列出栈顺序不可能的是( )
A. abcde B. acdbe C. cbaed D. bedca
10. 有如下python代码段:
s1="aabbcabba";s2="ab"
result="";i=0
while i<=len(s1)-len(s2):
if s1[i:i+len(s2)]!=s2:
result+=s1[i]
i=i+1
else:
i=i+len(s2)
print(result)
执行该代码段后,result的值为( )
A. "abcb" B. "abcba" C. "cb" D. "cba"
11. 现有两个降序的链表lst1,lst2,要将链表lst2中的数据合并到链表lst1中,保持lst1的有序性,python代码段如下:
lst1=[[49,1],[35,2],[23,-1]];lst2 =[[48,1],[34,2],[25,-1]]
h1=h2=0;pre=p=h1;q=h2
while q! =-1:
if p!=-1 and ① :
pre=p
p=lst1[p][1]
else:
lst1.append( ② )
if p==h1:
pre=h1=len(lst1)-1
else:
lst1[pre][1]= ③
pre=len(lst1)-1
q=lst2[q][1]
上述程序段中可选填的语句为:
①[lst2[p][0],q] ② lst1[p][0]<= lst2[q][0] ③lst1[p][0]>= lst2[q][0] ④[lst2[q][0],p] ⑤q ⑥len(lst1)-1
则划线处填写的语句依次为( )
A. ③④⑤ B. ③④⑥ C. ③①⑥ D. ②④⑥
12. python代码段如下:
from random import randint
lst=[0]*6
for i in range(6):
lst[i]=randint(2,8)*2+1
for i in range(5):
if i%2==0 and lst[i]>lst[i+1]:
lst[i],lst[i+1]=lst[i+1],lst[i]
else:
lst[i]+=1
执行该代码段后,lst中可能的值是( )
A. [7,13,9,6,13,6] B. [10,10,6,18,11,14] C. [5,10,12,6,12,8] D. [5,12,6,16,5,17]
二、填空题(共3题,共26分。13题7分,14题9分,15题10分)
13. 小明在学习了数的编码后,他用python编写了一个程序,可以实现不同进制的加法运算,加数可以是二进制数(B)、十进制数(D)、十六进制数(H)。如输入的算式为“1101B+2AH=”,则输出结果为“和为,55”。
(1)输入的算式为“1011B+3DH=”,则输出结果为____
(2)python代码如下,请在划线处填入合适代码,完善功能。
s=input("请输入算式:")
def convert(ch):
result=0
dic={"B":2,"D":10,"H":16}
jz=①____
for i in range(len(ch)-1):
if "A"<=ch[i]<="F":
result=result*jz+②____
else:
result=result*jz+int(ch[i])
return result
temp=""
sum=0
for i in range(len(s)):
if s[i]== "+" or s[i]=="=":
sum=sum+convert(temp)
③____
else:
temp=temp+s[i]
print("和为:",sum)
14. 某次技术周练后,王老师在登记了学生的成绩(部分数据如图1),成绩文件名为“周练成绩.xlsx”。现王老师想通过python编程处理学生成绩并分析:计算每个学生的技术总成绩;然后根据总成绩计算每个学生的名次;最后计算出各班技术总成绩的平均分并做成如图2的图表。
图1 图2
(1)读取表格数据,计算每个学生的总分。代码如下,请在划线①②处填入合适代码。
import pandas as pd
import matplotlib.pyplot as plt
df=pd.read_excel("①____ ")
plt.rcParams['font.sans-serif']=['SimSun'] #图表显示中文
for i in df.index:
df.at[i,"总分"]=②____
(2)删除缺考同学的数据(总分为0的学生),计算每个学生的排名,代码如下。
df2=① #删除缺考学生数据
for i in df2.index:
mc=1
for j in df2.index:
if df2.at[i,"总分"]<df2.at[j,"总分"]:
mc+=1
df2.at[i,"名次"]=mc
请划线①处填入合适代码( )(单选,填字母)
A.df[df["总分"]!=0] B.df["总分"!=0] C.df["总分"]!=0 D.df[df["总分"]]!=0
(3)计算各班技术总成绩的平均分并做成如图2的图表。代码如下,请在划线①②处填入合适代码。
df3=df2.①____ ("班级",as_index=False).mean()
x=df3.班级
y=②____
plt.bar(x,y)
plt.title("周练各班均分")
plt.xticks(x) #设置x轴刻度
plt.yticks(range(0,101,20)) #设置y轴刻度
plt.show()
15. 王老师带领同学们在操场上玩起了趣味游戏:n名同学(编号1,2,3,„,n分别表示),按照编号由小到大顺时针围成一个圆圈,马老师报一个数m(1到10之间的整数),学生从编号为1的学生开始顺时针报数,报到m的同学出列;下一名同学又从1开始报数,报数为m的同学继续出列;以此规律重复下去,直到剩下最后一位同学为止。作为幸运者,他将获得一份奖品。
(1)当n=10,m=3时,最后获奖同学的编号是____
(2)下列代码通过构造一个循环单向链表,模拟报数的过程,逐一删除报数为m的节点,直到剩下一个节点为止。请在划线处填入合适的代码。
n=int(input("请输入游戏人数:"))
m=int(input("请输入 m 值:"))
lst=[]
for i in range(n-1):
lst.append([i+1i+1])
lst.append(①____)
head=len(lst)-1
p=head
while n>1:
for i in range(1,m):
p=lst[p][1]
out=lst[p][1]
②____
n=n-1
print("最后留下的同学的编号是:",lst[p][0])
(3)下列代码通过构造一个一维数组,模拟报数的过程,逐一删除报数为m的编号,直到剩下一个编号为止。请在划线处填入合适的代码。
n=int(input("请输入游戏人数:"))
m=int(input("请输入 m 值:"))
a=[i for i in range(1,n+1)]
k=n;j=0;p=-1
while k>1:
j=j+1;p=p+1
if j==m:
for i in range(①____):
a[i]=a[i+1]
k=k-1;j=0;p-=1
if p==k-1:
②____
print("最后留下的同学的编号是:",a[0])
第1页/共1页
学科网(北京)股份有限公司
$$