内容正文:
第2章 算法与程序实现
一、选择题
1.以下哪个选项是正确的Python分支结构语法( )
A.if condition: action1 else action2 B.if condition action1: action2
C.condition if action1 else action2 D.if action1: condition else action2
2.以下哪个Python表达式可以正确地进行数值比较( )
A.a == b B.a = b C.a is b D.a equals b
3.有如下程序段:
count=0
s=list("python")
ss=""
for i in s:
ss=i+ss
count+=1
print(count,ss)
该程序段执行后,输出的结果为( )
A.5 python B.5 nohtyp C.6 python D.6 nohtyp
4.如图所示流程图,描述的算法执行结果是( )
A.8 B.9 C.16 D.17
5.流程图描述的算法执行结果是( )
A.75311357 B.11335577 C.30 D.32
6.在Python语言中,下面程序段运行结果是( )
w=2
if w<=1:
m=12
elif w<3:
m=12+(w-1)*3
else :
m=18+(w-3)*2
print(m)
A.2 B.12 C.15 D.16
7.在Python语言中,print(5%3**2+1)输出的结果是( )
A.2 B.5 C.6 D.9
8.下列关于算法的说法,正确的是( )
A.算法的三要素包括运算、执行、过程
B.用自然语言描述的算法通俗易懂、结构清晰、寓意明确
C.伪代码是一种比较直观简洁的、符号接近计算机程序代码的算法描述方式
D.解决问题的算法往往具有单一性,即一个问题用一种算法来解决
9.流程图所示,当变量m=3进入内循环时,内循环的循环体执行次数为( )
A.4 B.5 C.2 D.3
10.某Python程序如下:
p="Abc_123";s=""
for ch in p:
if"a"<=ch<="z":
s+=chr((ord(ch)-ord("a")+1)%26+ord("a"))
elif"0"<=ch<="9":
s+=str(9-int(ch))
else:
s+=ch
print(s)
运行该程序段后,变量s结果是( )
A.Acd_123 B.Bbc_123 C.Bbc_876 D.Acd_876
11.求a的7倍减3再除以b(b≠0)的余数,在Python中,正确的表达式是( )
A.(7a-3)/b B.7*a-3%b C.(7a-3)%b D.(a*7-3)%b
12.以下不属于Python标准函数的是( )
A.match( ) B.int( ) C.float( ) D.abs( )
13.某算法的部分流程图如图所示。若输入s1的值为"20,01,12,22",则输出s2的值为( )
A."CHI" B."GBFI" C."CDHI" D."GBF"
14.以下不属于算术运算符的是( )
A.** B.% C.!= D./
15.下图算法,其结构是( )
A.顺序结构 B.选择结构 C.组合结构 D.循环结构
16.“输出所有正奇数”不符合下列算法特征中的( )
A.有穷性 B.可行性 C.确定性 D.时效性
17.某算法的部分流程图如下图所示,执行这部分流程,若输入i的值为10,则输出i的值为( )
A.2 B.4 C.6 D.8
18.在Python语言中,用字典hero存储《水浒传》中的人物数据:hero={"天罡星":["宋江","卢俊义","吴用"],"地煞星":["朱武","黄信","孙立"]},下列表达式值为"吴用"的是( )
A.hero[0][2] B.hero{"天罡星"}[2] C.hero["天罡星"][3] D.hero["天罡星"][2]
二、填空题
19.一张单据上有一个五位数的编号,万位数是1,千位数是4,十位数是7,个位数是3,百位数已经模糊不清,只知道该五位数是57或67的倍数,找出所有满足这些条件的五位数并输出。如图所示,把流程图填写完整 、 。
20.在JavaScript中,用于定义类数组对象的内置对象是 。
21.在Python中, 关键字用于从序列中随机选择元素。
22.计算机程序中, 是指在程序执行过程中,根据条件重复执行一段代码直到满足特定条件停止的语句。
23.在计算机系统中, 是指计算机能够识别和执行的基本操作指令的集合。
24.在《数据与计算》中,算法的三种基本控制结构包括顺序结构、选择结构和循环结构,其中循环结构允许算法重复执行特定任务,直到满足某个 条件。
三、操作题
25.小明利用Python对“足球世界杯历史进球前20名”的数据进行分析,部分界面如图a。他先按国家分类,统计出各个国家的球员人数,再把球员人数最多的国家的球员,按“场均进球”数进行排序,并用图表呈现(如图b)。请在划线处填入合适的代码。
图a 图b
import csv
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
csvfile=open("历史进球.csv",'r')[[' 姓名','国家','进球个数,'出场次数','点球个数'],
reader=csv.reader(csvfile) ['阿德米尔',巴西','9','6','0,['巴蒂斯图塔',阿根廷','10','12','4'],
a=list(reader);country={} .....,尤西比奥','葡萄牙','9','6','4']]
列表a内容
for i in range(1,len(a)): #按国家分类
if a[i][1]not in country:
① {'葡萄牙':[20],'巴西':[1,4,16,19],'意大利':[3,15],·'阿根廷':[2],'匈牙利':[7],'秘鲁':[10],'法国'
else: :[5],'英国':[13],'波兰':[12],'德国':[6,8,9,1
country[a[i][1]]+=[i] 1,14,17],'西班牙':[18]}
max=0;country_max="." 字典country内容
for i in country.keys(): #找出前20名中人员最多的国家
if ② :
max=len(country[i])
country_max=i
df=pd.DataFrame(data=[],columns=["姓名","进球个数","出场次数"])
for i in country[country_max]:
df=df.append({"姓名":a[i][0],"进球个数":int(a[i][2]),"出场次数":int(a[i][3])},ignore_index=True)
③ =df["进球个数"]/df["出场次数"] #df最后插入1列“场均进球”
df=df.sort_values(④ ) #按“场均进球”排序
plt. ⑤ (df["姓名"],df["场均进球"],label="场均进球")
plt.title("前20名中人数最多国家球员场均进球情况")
plt.legend()
plt.xlim(0,1.2)
plt.show()
csvfile.close()
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.A
【详解】本题考查Python基础。
选项B,冒号写错位置并缺少else关键字。选项C,if关键字写错位置并缺少冒号。选项D,条件判断写错位置,应该写在if关键字后。故正确答案为:选项A。
2.A
【详解】本题考查Python基础。
a = b:这不是一个比较表达式,而是一个赋值操作,它将b的值赋给a。
a is b:这个表达式用于比较两个对象的身份(即它们是否指向内存中的同一个位置)。对于不可变类型(如整数、浮点数、字符串和元组)的小数值,Python会缓存这些对象,所以a is b可能意外地返回True,但这并不是因为它们的值相等,而是因为它们在内存中指向同一个对象。因此,对于数值比较,应该避免使用is。
a equals b:这不是一个有效的Python表达式。Python中没有equals这样的关键字或内置函数来直接用于数值比较。应该使用==来比较两个值是否相等。故正确答案为:选项A。
3.D
【详解】本题考查Python基础。
本题程序的功能是将字符串"python"转换为列表,然后将字符串内容进行反转操作,count为字符串的长度,因此输出结果为“6 nohtyp”,故答案为D。
4.A
【详解】本题考查算法流程图相关内容。本题涉及到双重循环,右边部分详解得出规律,当i+k==18时执行n=n+1,一共17组符合条件的数据,但是有一个隐含条件k=i+1,可以判断k>i,所以继续缩小符合条件的范围,只有8组。
1.i=1,n=0,i<=18成立程序执行“是”分支,k=i+1=2<=18成立程序执行“是”分支 验证i+k是否等于18,等于18执行n=n+1,如果i+k不等于18执行k=k+1=3,内循环继续执行k=k+1=4,k+1=5……直到k=17,i+k=18,执行n=n+1=1,最后程序执行k=k+1>18,跳出内循环执行i=i+1=2
2.i=2,n=1,i<=18成立程序执行“是”分支,k=i+1=3<=18成立程序执行“是”分支 验证i+k是否等于18,等于18执行n=n+1,如果i+k不等于18执行k=k+1=4,k=k+1=5……直到k=16,i+k=18,执行n=n+1=1,n=n+1=2,最后程序执行k=k+1>18,跳出内循环执行i=i+1=3
3.i=3,n=2,i<=18成立程序执行“是”分支k=i+1=4<=18成立程序执行“是”分支验证i+k是否等于18,等于18执行n=n+1,如果i+k不等于18执行k=k+1=5,k=k+1=6……直到k=15,i+k=18,执行n=n+1=1,n=n+1=3,最后程序执行k=k+1>18,跳出内循环执行i=i+1=4后面依次反复以上步骤。
故本题答案是A选项。
5.D
【详解】本题考查算法分析。
该算法功能为计算出a=13577531各个位上的数字和累加到s。即s=1+3+5+7+7+5+3+1=32。故正确答案为:选项D。
6.C
【详解】本题考查Python基础。
初始化 w = 2。
进入 if-elif-else 结构:
首先检查 if w<=1:,由于 w 的值是 2,不满足这个条件,所以不会执行这个分支下的 m=12。
然后检查 elif w<3:,由于 w 的值是 2,满足这个条件(2 小于 3),所以会执行这个分支下的代码 m=12+(w-1)*3。
既然已经找到了满足条件的分支并执行了相应的代码,就不会再检查 else 分支了。
在 elif 分支中,计算 m 的值:m = 12 + (2-1)*3。这里 (2-1)*3 计算结果为 3,所以 m = 12 + 3 = 15。
最后,打印 m 的值,即 print(m) 会输出 15。
故正确答案为:选项C。
7.C
【详解】本题考查Python表达式。在Python中,先计算指数运算,即3**2=9。然后进行取模运算,5%9=5。最后进行加法运算,5+1=6。故答案为:C。
8.C
【详解】本题考查算法相关内容。A选项,算法的三要素包括数据、运算和控制转移,选项错误。B选项,用自然语言描述的算法通俗易懂,但是容易产生歧义,选项错误。C选项,伪代码是一种比较直观简洁的、符号接近计算机程序代码的算法描述方式,选项正确。D选项,解决问题的算法往往具有多样性,选项错误。故本题答案是C选项。
9.C
【详解】本题考查算法分析。
当m=3,第一次比较n=1,n<m,进入循环。第二次比较n=2,n<m,进入循环。第三次比较n=3,n==m,退出循环。故进入循环体内执行了两次。故正确答案为:选项C。
10.D
【详解】本题考查Python程序。程序中遍历了字符串p中的每个字符,根据字符的类型进行不同的处理:如果是小写字母,则将其转换为相邻的下一个小写字母,如果是"z",则转换为"a"。如果是数字,则将其转换为9减去该数字。其他情况下,保持字符不变。根据给定的字符串p="Abc_123",逐个字符进行处理:"A"保持不变。"b"转换为"c"。"c"转换为"d"。"_"保持不变。"1"转换为"8"。"2"转换为"7"。"3"转换为"6"。故答案为:D。
11.D
【详解】本题考查Python表达式。在Python中,乘运算符是*,取余运算符是%,除运算符数/,因此对应的表达式是(a*7-3)%b。故选D。
12.A
【详解】本题考查标准函数。match函数是Python中用于正则表达式匹配的函数,而不是Python的内置标准函数。故选择A。
13.C
【详解】本题考查算法流程图相关内容。分析流程图,其关键操作可描述为:(1)i=1时,s2=C;(2)i=2时,s2=C;(3)i=4时,s2=CD;(4)i=5时, s2=CD;(5)i=7时,s2=CDH;(6)i=8时,s2=CDH;(7)i=10时,s2=CDHI。故本题答案是C选项。
14.C
【详解】本题考查Python运算符相关内容。“**”为算术运算符中的乘方运算;“%”为算术运算符中的取余运算;“/”为算术运算符中的除法运算;“!=”为关系运算符中的不等于运算。故本题答案是C选项。
15.B
【详解】本题考查算法流程图相关内容。算法结构有:顺序结构、选择结构、循环结构。顺序结构表示程序中各步操作按出现的先后顺序执行;选择结构表示程序的处理步骤出现了分支,需要根据某一特定条件选择其中一个分支执行;循环结构表示程序反复执行某个或某些操作,直到判断条件为假(真)时才可终止循环。由图可知,该流程图是选择结构。故本题答案是B选项。
16.A
【详解】
本题考查算法特征相关内容。算法的特征有:有穷性、确定性、可行性、有零个或多个输入、有一个或多个输出。“输出所有正奇数”正奇数有无穷多个,违反了有穷性。故本题答案是A选项。
17.C
【详解】本题考查算法流程图相关内容。分析流程图,a依次在[1,5]范围内取值时,i依次取值:4、8、2、6、0;a依次在[6,10]范围内取值时,i依次取值:4、8、2、6、0;......。可推出,a为4、9、14、......、2019、2024时,i值均为6,故此处答案为C选项。
18.D
【详解】本题考查数据结构。给定的字典hero中,键是字符串,值是列表。根据字典索引的规则,hero["天罡星"][2]才能正确获取到值"吴用",因为首先通过键"天罡星"获取到对应的值,得到包含"宋江"、"卢俊义"、"吴用"的列表,然后再通过索引[2]获取到列表中的第三个元素,即"吴用"。故答案为:D。
19. n % 57 == 0 or n % 67 == 0 k=k+1
【详解】本题考查算法流程图相关内容。分析流程图,采用的是枚举算法来解决问题。枚举算法要列举所有的可能条件,不能重复,不能遗漏。五位数上百位模糊不清,根据流程图提示信息k * 100,所以k的取值范围是0~9,而且此五位数是57或67的倍数,所以第一空填为n % 57 == 0 or n % 67 == 0,循环需要继续下去,所以第二空是k = k+1。故①处答案是:n % 57 == 0 or n % 67 == 0,②处答案是:k=k+1。
20.Array
【详解】本题考查计算机编程。在JavaScript中,Array是内置的对象,用于创建和操作类数组的数据结构,能够存储一系列有序的元素,并提供了丰富的方法来对这些元素进行操作和处理。故答案为:Array。
21.random.choice()
【详解】本题考查Python。在Python中,random模块中的choice()方法能够从给定的序列(如列表、元组等)中随机地选取一个元素。故答案为:random.choice()。
22.循环
【详解】本题考查程序设计语言。
在计算机程序中,循环是一种控制结构,它允许根据一定的条件重复执行一段代码块多次。这种机制在编程中非常有用,尤其是当你需要重复执行相同或相似的任务多次时,而不需要重复编写相同的代码。故正确答案为:循环。
23.指令集
【详解】本题考查指令集。在计算机系统中,指令集是指计算机能够识别和执行的基本操作指令的集合。指令集规定了计算机硬件能够执行的各种操作,包括数据处理、存储访问、控制流程等。不同类型的计算机处理器可能具有不同的指令集,指令集的设计和功能直接影响计算机的性能和所能完成的任务。故答案为:指令集。
24.终止
【详解】本题考查算法结构。在《数据与计算》中,算法的三种基本控制结构被清晰地阐述为顺序结构、选择结构和循环结构。其中,循环结构作为其中的一种,允许算法根据一定的条件重复执行特定任务。
定义:循环结构是指算法中需要重复执行某个或某些操作直到满足特定条件才终止的一种控制结构。
重复性:循环结构中的代码块会按照指定的次数或条件进行重复执行。
条件性:循环结构中的重复执行不是无限的,它依赖于一个或多个条件,当这些条件满足时,循环才会终止。
高效性:当需要处理大量重复数据时,循环结构可以显著提高算法的执行效率。
故正确答案填写终止。
25. country[a[i][1]]=[i] len(country[i])>max或len(country[i])>=max df["场均进球"] "场均进球",ascending=True barh
【详解】本题考查Python程序设计。①国家的名称为键,添加到空字典中,值为列表,加入索引。故填写country[a[i][1]]=[i]。 ②遍历国家字典,取出列表长度。if缺少判断条件,如果大于或大于等于max,则将最多的人员存放到max中。故填写len(country[i])>max或len(country[i])>=max。③增加一列存放场均进球。故df["场均进球"]。④sort_values方法缺少排序参数,按照场均进球且配置排序为降序排序设置ascending=True,故填写"场均进球",ascending=True。⑤根据图b可知绘制条形图,在Matplotlib库中,绘制条形的函数为barh,得知提干中缺少调用的函数名称,故填写barh。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$