内容正文:
第2章 算法与程序实现
一、选择题
1.Python解释器执行print('金额:{0:f}元'.format(1.5000))的结果为( )
A.金额:1.5 元 B.金额:1.500 元
C.金额:1.500000元 D.金额:¥1.50000元
2.有如下Python程序段:
a="Welcome!"
if len(a)>9:
y=a[0:2]
elif len(a)>5:
y=a[3:7]
else:
y=a[0:3]
该程序段运行后,变量y的值是( )
A.come! B.come C.lcome D.lcom
3.执行以下python程序,若输入的值是2,则输出的结果是( )
a=int(input( ))
a=a**3
print(a)
A.2 B.4 C.6 D.8
4.某算法的部分流程图如图所示,执行这部分流程,若输入m、n、x的值依次为10、2、5,则输出n的值是( )
A.5 B.6 C.7 D.8
5.下列表达式中的值与其他选项不同的是( )
A.80//abs(3-8) B.len("2024")**2 C.23%4*5+1 D.int(3.8)*4
6.与关系表达式x==0等价的表达式是( )
A.x=0 B.not x C.x D.x!=1
7.用流程图表示算法时,表示“开始/结束”的符号是( )
8.在有限的步骤内解决某一问题的确切过程叫做算法。以下关于算法的描述中,错误的是( )
A.《九章算术》中用“更相减损术”求最大公约数的记载属于算法的自然语言描述
B.算法必须有输入,也必须有输出,而且可以有多个输入输出
C.任何复杂的算法最终都可以用顺序、分支、循环结构来实现
D.同一问题选用不同的算法执行效率可能会有很大差别
9.已升序排序的列表a有n个整型元素,现要删除a中重复出现的元素,使每个元素只出现一次,并输出去重后的结果。实现该功能的程序段如下:
a = [1,2,2,2,5,5,5,8]
p,q = len(a)-1, len(a)-2
while (1)
if a[p] != a[q]:
(2)
p -= 1
q -= 1
print( (3) ) 上述程序段中方框处可选代码为:
①q >= 0 ② p >= 0 ③ a[p-1] = a[q] ④ a[p] = a[q] ⑤ a[p:] ⑥a[p+1:]
则(1)(2)(3) 处代码依次为( )
A.①③⑥ B.①③⑤ C.②③⑥ D.②④⑤
10.将数学关系式5≤x<14表示成Python表达式,正确的是( )
A.5≤x<14 B.5≤x and x<14 C.x>=5 or x<14 D.x>=5 and x<14
11.对于不等于0的整数a和b,若表达式a%b==1成立,则表明( )
A.a与b一定相等 B.a总比b大1
C.a不是负数,b肯定也不是负数 D.a比b的整数倍多1
12.已知s="2023杭州亚运",则下列Python表达式中,值为True的是( )
A.s[1]=="2" B.s[2:4]==23 C.len(s)==7 D.5<len(s)<10
13.某超市部分商品信息用Python存储在列表goods中,goods={"蔬菜":["青菜","土豆","萝卜"],"水产":["鲫鱼","明虾","青蟹"],"水果":["西瓜","苹果","桔子"]},若要将“明虾”改为“河虾”,则正确的语句是( )
A.goods[1]["明虾"]="河虾" B.goods[1][1]="河虾"
C.goods["水产"]["明虾"]="河虾" D.goods["水产"][1]="河虾"
14.下列关于Python的调试器 pdb的使用方法表述错误的是( )
A.pdb支持在源代码行别设置(条件)断点和单步执行等
B.使用前,需要在程序开头加入“import pdb”
C.让程序暂停运行,无须设置断点
D.使用命令p加变量名,打印变量的值
15.下列流程图符号中,能表示操作的内容,如“变量的计算与赋值”的是( )
A. B. C. D.
二、填空题
16.执行如下程序,写出运行结果。
a=int(input())
b=int(input())
if a%3==0:
if b%2==0:
c=a**b
else:
c=a*b
else:
c=a-b
print(c)
从键盘依次输入3和4,执行如下程序,则运行结果为 。
17.从键盘输入圆的半径r,编程计算圆的面积s。
r=float(input("请输入圆的半径:"))
=3.14*r*r
print("圆的面积s=",s)
18.Python中读写文本文件的方法,其中打开用 把外存储器里的文本文件(.txt)打开;存储用 将内存中的数据存储到外存储器的文件中;关闭文件时一定要用 关闭文件。
19.在现实世界中,由于数据采集、数据存储、数据操作等诸多方面的原因,可能使数据有所缺失,即数据中某个或某些特征的值是不完整的。检测数据缺失值的代码片段如下所示,其中表示输出检测缺失值结果的代码行号是 。
1 import pandas as pd
2 str_data=pd.Series(['小明','小张','小赵',None,'小王'])
3 print(str_data)
4 print(str_data.isnull())
20.以下流程图的运行结果是 。
三、判断题
21.定义Python函数时必须指定函数返回值类型。( )
22.创建只包含一个元素的元组时,必须在元素后面加一个逗号,例如(3,)。( )
23.在编写程序时,要养成添加注释的良好习惯,以提高程序的可读性。( )
24.NAME、name、Name、NaMe是不同的变量。( )
25.在任何情况下,编程计算都优于人工计算。( )
四、操作题
26.如图所示,流程图输出s=10,则在空白处填入合适表达式为 ,并完成Python编码 。
27.某校高二年级进行体质健康测试,测试数据存储在data.xls x文件中,部分数据如图a所示。请回答下列问题:
图a
(1)下列关于数据整理的说法,正确的是 (多选,填字母)
A.C2单元格数据出现了逻辑错误,可再次访问数据源,验证数据后进行修正
B.第5行“吴妙文”的测试数据缺失,可直接复制上一条数据记录进行填充
C.“立定跳远”列数据有厘米和米两种计数单位,需要统一数据格式
D.第6行与第7行姓名重复,可直接删除其中一行
(2)数据整理完成后,要对数据进行统计分析,要求如下:按照国家体质健康标准(总得分大于等于90的等级为优秀),统计各班级等级为优秀的人数。
现编写程序如下:
#导入需要用到的模块,代码略。
df=pd.read_excel("data.xls x")
for i in range(len(df)):
if df.at[I,"总得分"]>=90:
df.at[i"等级"]="优秀"
dfg=
加框处的代码应为 (单选,填字母)
A.df.groupby("班级",as_index=False)["总得分"].count()
B.df.group by("班级",as_index=False) ["等级"].count()
C.df.group by("等级",as_index=False).count()
D.df group by("等级",as_index=False) [“班级”].count()
(3)为了更加客观的评价各个班级的优秀情况,现计算出各班的优秀率,并绘制线形图,如图b所示,请在划线处填入合适的代码。
图b
y=[0]*16
num=[36,35,34,35,35,37,35,34,36,34,38,36,38,36,40,39] #各班级人数
for i in range(16):
x=dfg.at[i,"等级"]
y[i]=① #优秀率=优秀人数/总人数*100
plt.plot(dfg.班级,② )
#设置绘图参数,显示如图b所示线形图,代码略
(4)学校要表彰体测优秀率最高的班级,由图b可知,要表彰的班级是 班。
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.C
【详解】本题考查Python基础。
在Python中,{0:f}可以将第一个参数格式化为默认精度的浮点数即6位小数,并保留小数点后面的数字。故正确为:选项C。
2.B
【详解】本题考查Python基础。
a的字符串长度为8,即5<len(a)<9,因此执行语句y=a[3:7],结果为come。故正确答案为:选项B。
3.D
【详解】本题考查Python程序。程序中的关键点是对输入值进行立方运算,然后输出结果。根据题目的设定,如果输入的值是2,那么程序执行的具体步骤如下:用户输入一个整数,假设输入为2。 程序将输入的值2进行立方运算:23=8。最后输出结果,即打印变量a的值,结果为8。故答案为:D。
4.C
【详解】本题考查流程图。程序运行过程如下所示。因此,最终输出n的值为7。故答案为:C。
m
n
x
a
10
2
5
5
10
7
0
1
5.D
【详解】本题考查表达式。A选项:80//abs(3-8) = 80//5 = 16。B选项:len("2024")**2 = 4**2 = 16。C选项:23%4*5+1 = 3*5+1 = 15+1 = 16。D选项:int(3.8)*4 = 3*4 = 12。故答案为:D。
6.B
【详解】本题考查的是Python表达式。在Python中,0代表False,非0代表True,not是取反。x为0时,x==0值为True,not x值为True;x为非0时,x==0值为False,not x值为False。故选B。
7.B
【详解】本题考查的是流程图相关知识。流程图中菱形表示判断,圆角矩形表示开始/结束,矩形表示处理框,平行四边形表示输入/输出。故本题应选B。
8.B
【详解】本题考查算法。算法不一定必须有输入,但必须有输出。例如,有些算法是自启动的、不依赖外部输入的,但最终会有输出。故答案为:B。
9.B
【详解】本题考查Python程序设计相关内容。分析程序段,其作用是从列表尾部往前遍历,若出现重复元素,则将重复元素之前的一个元素复制到p所指位置之前的位置(p始终指向不重复序列的起始位置),以a = [1,2,2,2,5,5,5,8]为例,从a列表尾部往前遍历,5为重复元素,且重复出现多次,则将最前面5之前的元素2(a[3])复制到p所指位置前的a[5]处,覆盖原数值5,p再指向a[5]处;再往前遍历,2为重复元素,且重复出现多次,则将最前面2之前的元素1复制到p所指位置前的a[4]处,覆盖原数值5;再往前遍历,已无重复元素,操作结束。分别将四个选项代入程序下划线处,只有B选项可以实现题目要求。故本题答案为B选项。
10.D
【详解】本题主要考查Python表达式。逻辑运算符or两边值均为假时值才为假,否则值为真;逻辑运算符and两边值均为真时值才为真,否则值为假,not是取反。5≤x<14,表示x大于等于5且小于14,即x>=5 and x<14。故选D。
11.C
【详解】本题考查Python表达式的运算。若a和b相等,则a%b=0,选项A错误。若a=1,b=2,则a%b=1,排除BD选项。若a=1,b=-2,则a%b=-1,因此a不是负数,b肯定也不是负数。故选C。
12.D
【详解】本题考查的是Python表达式。已知s="2023杭州亚运",则s[1]=="0",因为索引从0开始,选项A错误;变量s是字符串类型的数据,所以s[2:4]="23",选项B错误;字符串"2023杭州亚运"中共有8个字符,所以len(s)==8,选项C错误;5<len(s)<10 结果为True,故本题应选D。
13.D
【详解】本题考查Python字典和列表数据类型的应用。字典是一种通过名字或者关键字引用的得数据结构,通过字典中的【键】来访问字典中的值,访问的格式如下:字典名[键]。列表的索引从0开始。goods={"蔬菜":["青菜","土豆","萝卜"],"水产":["鲫鱼","明虾","青蟹"],"水果":["西瓜","苹果","桔子"]},goods["水产"]=["鲫鱼","明虾","青蟹"],若要将“明虾”改为“河虾”,则正确的语句是goods["水产"][1]="河虾"。故选D。
14.C
【详解】本题考查Python程序调试。pdb支持在源代码行别设置(条件)断点和单步执行等;使用前,需要在程序开头加入“import pdb”;让程序暂停运行,需要设置断点;使用命令p加变量名,打印变量的值。故选C。
15.A
【详解】本题考查算法流程图。菱形是条件判断框,平行四边形是数据输入/输出框,圆角矩形是开始/结束框,矩形是数据处理框(用于变量的计算与赋值),故本题选A选项。
16.81
【详解】本题考查Python程序设计相关内容。将3和4代入程序段,则a%3==0成立且b%2==0成立,执行c=a**b操作,所以c=3**4=81。故本题答案是:81。
17.s
【详解】本题考查Python程序。在计算圆的面积时,需要先定义一个变量来存储计算结果。这里用变量s来表示圆的面积,根据圆的面积公式s=3.14*r*r,将计算结果存储在s中,然后通过print函数输出。故答案为:s。
18. open函数 write方法 close方法
【详解】本题考查Python相关知识。Python中读写文本文件的方法,其中打开用open函数把外存储器里的文本文件(.txt)打开;存储用write方法将内存中的数据存储到外存储器的文件中;关闭文件时一定要用close方法关闭文件。
19.4
【详解】本题考查数据处理。1、导入pandas库。2、构造一个Series对象。3、打印输出str_data。4、调用isnull方法,检测缺失值。故正确答案4。
20.24,40
【详解】本题考查算法流程图相关内容。分析流程图可知,该流程图描述的是顺序结构,执行顺序:(1)a1=8,a2=16(a1、a2获得初值);(2)a1=a1+a2=8+16=24,a1值为24;(3)a2=a1+a2=24+16=40,a2的值为40。故本题答案是:24,40。
21.错误
【详解】本题考查Python基础。
在Python中,定义函数时不需要显式指定函数的返回值类型,这与一些静态类型语言(如C++、Java或TypeScript)不同。Python是一种动态类型语言,这意味着变量的类型是在运行时动态确定的,而不是在编写代码时静态确定的。故错误。
22.正确
【详解】本题考查Python基础。
在Python中,要创建一个只包含一个元素的元组,确实需要在该元素后面加上一个逗号。这是因为在Python中,圆括号()通常用于定义元组(tuple)或者作为函数调用的一部分,但如果没有逗号来明确指示这是一个元组,Python解释器可能会将圆括号内的内容解释为表达式或仅仅是一个普通的值,而不是元组。故正确。
23.正确
【详解】本题考查程序设计注释相关内容。注释的作用是为了让自己或他人更快地了解程序作者的思路和意图,提高代码的可读性,同时在多人协同开发时,也可以提高开发效率。说法正确。
24.正确
【详解】本题考查Python变量的描述。Python变量区分字母的大小写,故表述正确。
25.错误
【详解】本题考查编程解决问题的描述。题干表述过于绝对,编程计算并非在任何情况下都优于人工计算,某些情况下,人工计算可能更优,故表述错误。
26. i % 3 == 0 s=0
for i in range(1,31):
if i % 3 == 0:
s=s+1
print(s)
【详解】本题考查流程图与Python程序。
(1)由输出可知,在这个流程图和对应的Python代码中,目的是计算在1到30的整数中,能被3整除的数的个数,并将其累加到变量s中。在空白处填入i%3==0,表示当i能被3整除时执行相应操作。故答案为:i % 3 == 0。
(2)在Python编码中,首先初始化s=0。然后通过for循环遍历从1到30的整数。对于每个整数i,使用条件判断if i%3==0,如果满足该条件,即i能被3整除,就将s的值增加1。最后,使用print(s)输出能被3整除的数的个数。
27. AC B x/num[i]*100或其他等价答案 y 13
【详解】本题考查Python综合应用。
(1)数据出现逻辑错误时,应该再次访问数据源进行验证和修正;B选项错误,因为数据缺失时,不能随意复制其他数据进行填充,这可能导致数据分析的结果偏离实际;C选项正确,数据中的计数单位需要统一,以便于数据处理和分析;D选项错误,因为数据中姓名的重复并不一定意味着数据重复,应进一步核实后再决定是否删除。故答案为:AC。
(2)根据题目要求,需要统计各班级等级为优秀的人数,所以应该按照班级进行分组,然后计数等级为优秀的人数。故答案为:B。
(3)为了计算各班的优秀率,需要将优秀的人数除以总人数,然后乘以100。故答案为:x/num[i]*100。根据题目要求,需要绘制线形图,线形图的y轴应该是优秀率。故答案为:y。
(4)根据图b,体测优秀率最高的班级是13班。故答案为:13。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$