内容正文:
第三单元 算法和程序设计
一、选择题
1.在Python中,以下表达式的运算结果为2的是( )
A.16/8 B.16%8 C.16//8 D.sqrt(4)
2.在Python语言中,下面程序段运行结果是( )
a=1
s=0
for i in range(1,5):
a=a*i
s=s+a
print(s)
A.0 B.15 C.33 D.120
3.下面代码的输出结果是( )
weekstr = “星期一星期二星期三星期四星期五星期六星期日”; weekid = 3
print(weekstr[weekid*3: weekid*3+3])
A.星期二 B.星期三 C.星期四 D.星期一
4.某算法的部分流程图如图所示,若n的值为6,数组元素a[0]至a[n-1]依次存放2,0,1,0,0,1。执行这部分流程后,输出f的值为( )
A.1 B.2 C.3 D.4
5.有如下Python程序段:
a=[1,3,3,5,5,7,7,11,15]
i=0; j=len(a)-1
ans=[ ]
key= 5
while i<=j:
m=(i+j)//2
ans.append(a[m]) #在列表ans末尾添加元素a[m]
if a[m]>key:
j=m-1
else:
i=m+1
执行该程序段后,下列说法正确的是( )
A.i的值是4 B.j的值是5 C.m的值是5 D.ans的值是[5,3,5]
6.运行以下Python程序,结果是( )
S=0
P=1
while P <= 10:
if P % 3 == 0:
S=S + 1
P=P + 2
print(S)
A.2 B.3 C.4 D.5
7.下列Python表达式中,计算结果值与其它选项不同的是( )
A.abs(-3//2) B.3**3%5 C.len("1+2") D.int(max("2","12"))
8.运行下列Python程序后,输入41,输出结果为( )
f=float(input("请输入一个华氏温度:"))
c=5*(f-32)/9
print(c)
A.5 B.5.0 C.10 D.10.0
9.某算法的部分流程图如图所示,执行这部分流程,输出c的值是( )
A.9 B.10 C.90 D.100
10.有如下 Python程序段:
dic = {'2':'ABC','3':'DEF','4':'GHI','5':'JKL','6':'MNO','7':'PQRS','8':'TUV','9':'WXYZ'}
s= input()
m=""
t=0
for i in range(1, len(s)):
if s[i]==s[i-1]:
t+=1
elif s[i]=="#":
m=m+dic[s[i-1]][t]
t=0
print(m)
若运行该程序后输出“GET”,则输入的内容可能是( )
A.5#44#9# B.4#33#8# C.3#22#7# D.4#3#8#
11.有如下Python程序段,执行该程序段后,输出显示的内容是( )
s=0
for k in range(1,5,2):
if k<=1:
m=1
if k<=2:
m+=2
else:
m+=3
s+=m
print(s)
A.4 B.5 C.9 D.13
12.阅读下列材料,完成问题
不规则形状的面积可以采用蒙特卡洛方法来求解,其原理是在不规则形状外侧构建一个规则图形,通过随机产生点的方式在规则形状范围内产生数量足够的点,统计在不规则形状中的点的比例,从而计算出不规则形状的面积。如图,小姜通过Python编程计算边长为2的正方形与函数y=X2交叉形成的阴影部分面积,程序如下:
import random
points=1000*1000
hits =0
for i in range(points):
x= ① #随机产生一个[0,2]的数并赋值给x
y= ② #随机产生一个[0,2]的数并赋值给y
dist =0.5*x**2
if ③ :
hits=hits+1
print("阴影部分面积是:", ④ )
划线①②处均需要随机产生[0,2]的数并赋值给变量x和y,查看下表,下列选项中可以产生满足条件随机数的是( )
名称
含义
random.randint(a,b)
随机生成一个[a,b]范围内的整数
random.random()
随机生成一个(0,1)范围内的实数
random.choice(seq)
从序列seq的元素中随机挑选一个元素
random.uniform(a,b)
随机生成一个[a,b]范围内的实数
A.random.randint(0,2) B.random.uniform(0,2)
C.random.choice(range(0,2)) D.random.random( )*2
13.某算法的流程图如图所示,执行该流程后,输出sum,n的值分别是( )
A.28,10 B.280,10 C.280,13 D.28,13
14.下面代码的执行结果是( )
object =["石榴",1,"香蕉","橙子","梨子"]
object .append("猕猴桃")
print (object)
A.["石榴",1,"香蕉","橙子","梨子"]
B.["石榴",1,"香蕉","橙子","梨子","猕猴桃"]
C.["猕猴桃","石榴",1,"香蕉","橙子","梨子"]
D.[1,"香蕉","橙子","梨子"]
15.用python程序对数组元素进行分组,程序运行后b[2]的值为( )
a=[6,4,2,8,5,3,9,17];b=[]
for i in range(len(a)):
f=False
for j in range(len(b)):
if a[i]>b[j][-1]:#列表b是一个二维数组
b[j].append(a[i])#append函数在列表末尾添加一个元素
f=True
break #跳出本层循环
if f==False:
b.append([a[i]])#新元素为一维数组
A.[2,3] B.[4,5] C.[6,8,9,17] D.[2,5,9]
16.下列关于算法特征的叙述,正确的是( )
A.算法所包含的步骤可以是无穷的 B.算法每一步骤必须确切地定义
C.一个算法可以没有输出 D.算法只能用Visual Basic来实现
17.某客户购买的新能源汽车价格为t万元,可享受当地政府购车补贴,补贴标准如下:价格20万元(不含)以下,补贴0.25万元;价格20万元(含)至30万元(不含),补贴0.5万元;价格30万元(含)以上,补贴1万元。在下列选项中,计算实际购车价格p的程序代码正确的是( )
A.
p=t-0.25
if t>=20:
p=t-0.5
elif t>=30:
p=t-1
B.
p=t-1
if t<20:
p=t-0.25
elif t<30:
p=t-0.5
C.
p=t-0.25
if t>=30:
p=t-1
if t>=20:
p=t-0.5
D.
p=t-1
if t>=20:
p=t-0.5
else:
p=t-0.25
A.A B.B C.C D.D
二、填空题
18.角谷猜想。角谷猜想是指一个正整数y,如果y是奇数,则将其乘以3,然后再加1;如果是偶数,则将其除以2。这样经过若干次运算后,总可以得到自然数1。
小明根据角谷猜想进行了算法设计,并用如下流程图来描述该算法。
请回答下列问题:
(1)根据本题算法的流程图所示,则流程图中①②处应填写的内容分别是:① ;② 。
(2)若输入y的值为10,则输出的运算次数为 。(填数字)
19.以下程序的功能如下:计算表达式1+3+9+27+81+…+2187的值,则程序中画线处的表达式应为 。
t=0
i=1
while i<= 2187:
t=t+i
print(t)
20.在Python中, 是用于实现循环遍历的关键字。
21.算法的常用表示方法有3种: 、 、 。
22.一个算法中的每一步都应该是确定的、没有歧义的语句,这符合算法特征中的( )性。
三、判断题
23.已知列表x = [1, 2],执行语句y = x后,表达式id(x) == id(y)的值为True。( )
24.算法只能用自然语言来描述。( )
25.网络爬虫是种程序或脚本,通过它可以将非结构化数据从网页中抽取出来,并以结构化的方式存储为本地数据文件。( )
26.衡量算法的优劣往往从时间复杂度和空间复杂度两个维度考虑。( )
27.用户自定义函数通过return语句只能返回一个数值。( )
四、操作题
28.某饮料公司最近推出了一个“收集瓶盖赢大奖”的活动:如果拥有10个印有“幸运”或20个印有“鼓励”的瓶盖,就可以兑换一个神秘大奖。现分别给出你拥有的印有“幸运”和“鼓励”的瓶盖数,判断是否可以兑换大奖。若可以兑换大奖,输出1,否则输出0。
输入:两个整数,分别表示印有“幸运”和“鼓励”的瓶盖数
输出:若可以兑换大奖,输出1,否则输出0。
输入样例:
11
19
输出样例:
1
请根据要求编写出上述案例的Python语言程序。
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.C
【详解】本题考查Python基础。16/8 = 2.0(浮点数除法);16%8 = 0(取余运算);16//8 = 2(整除运算);sqrt(4) = 2.0(开平方运算),故选择C。
2.C
【详解】本题考查Python基础。
该程序功能为:遍历产生1到4的数赋值给变量i,每次累乘i到变量a,累加a到变量s。故s=1+2+6+24=33。故正确答案为:选项C。
3.C
【详解】本题考查Python基础。
Python 中的字符串索引是从 0 开始的。字符串切片 s[start:end] 会返回从索引 start 到 end-1 的子字符串(包含 start 索引,但不包含 end 索引)。
题目中weekstr[weekid*3: weekid*3+3]=weekstr[9:12],故正确答案为:选项C。
4.B
【详解】本题考查算法流程图相关内容。分析流程图,其运行过程,具体如下:
(1)i=1,i<6成立,执行循环体:a[i-1]>a[i]成立,k=k+1=1,i=i+1=2;
(2)i=2,i<6成立,执行循环体:a[i-1]>a[i]不成立,a[i-1]<a[i]成立,f=f+k=1,k=0,i=i+1=3;
(3)i=3,i<6成立,执行循环体:a[i-1]>a[i]成立,k=k+1=1,i=i+1=4;
(4)i=4,i<6成立,执行循环体:a[i-1]>a[i]不成立,a[i-1]<a[i]不成立,i=i+1=5;
(5)i=5,i<6成立,执行循环体:a[i-1]>a[i]不成立,a[i-1]<a[i]成立,f=f+k=2,k=0,i=i+1=6;
(6)i=6,i<6不成立,输出f,即:2。
故本题答案是B选项。
5.C
【详解】本题考查Python程序综合应用。第一遍循环,i=0,j=8,m=(i+j)//2=4,不满足a[4]=5>key,i=m+1=5;第二遍循环,m=(i+j)//2=6,满足a[6]=7>key,j=m-1=5;第三遍循环,m=(i+j)//2=5,满足a[5]=7>key,j=m-1=4;第四遍循环,不满足i<=j,循环结束。此时i的值是5,j的值是4,m的值是5,ans的值是[5,7,7]。故选C。
6.A
【详解】本题考查Python程序。首先,初始化S=0表示累加的结果初始为0,P=1作为循环的起始值。然后进入while循环,只要P<=10就会执行循环体。在循环体中,通过if P%3==0来判断P是否能被3整除。当P=1时,不满足能被3整除的条件,P=P+2=3。当P=3时,满足能被3整除的条件,S=S+1=1,然后P=P+2=5。当P=5时,不满足能被3整除的条件,P=P+2=7。当P=7时,不满足能被3整除的条件,P=P+2=9。当P=9时,满足能被3整除的条件,S=S+1=2,然后P=P+2=11。此时P=11,不满足P<=10的循环条件,循环结束。最终输出S的值为2。故答案为:A。
7.C
【详解】本题考查Python表达式。abs(-3//2):首先计算-3//2得到-2,然后取其绝对值得到2。3**3%5:首先计算3**3得到27,然后对27取模5得到2。len("1+2"):字符串"1+2"的长度为3,因此结果是3。int(max("2","12")):比较字符串"2"和"12",根据字符串的ASCII码比较规则,逐个字符比较,"2"在"1"之前,所以max("2","12")返回"2",然后将其转换为整数得到2。故答案为:C。
8.B
【详解】本题考查Python程序执行。float ()函数是Python内置的一个函数,用于将其他数据类型转换为浮点数类型。输入41,则c=5*(f-32)/9=5*9.0/9=5.0。故选B。
9.A
【详解】本题考查的是流程图识读。阅读流程图,可知其计算10~99中个位和十位数字相同的数有的个数。11、22、33、44、55、66、77、88、99满足,一共有9个。故本题应选A。
10.B
【详解】本题考查Python程序。程序通过遍历输入字符串s,当相邻字符相同时,记录相同字符的个数t。遇到“#”时,根据前一个字符在字典dic中对应的字符串,取出第t个字符添加到m中。选项A:输入5#,5对应的是“JKL”,t=1,取出第1个字符“J”;44#,4对应的是“GHI”,t=2,取出第2个字符“H”;9#,9对应的是“WXYZ”,t=1,取出第1个字符“W”,最终得到“JHW”,不符合输出“GET”。选项B:输入4#,4对应的是“GHI”,t=1,取出第1个字符“G”;33#,3对应的是“DEF”,t=2,取出第2个字符“E”;8#,8对应的是“TUV”,t=1,取出第1个字符“T”,最终得到“GET”,符合输出。选项C:输入3#,3对应的是“DEF”,t=1,取出第1个字符“D”;22#,2对应的是“ABC”,t=2,取出第2个字符“B”;7#,7对应的是“PQRS”,t=1,取出第1个字符“P”,最终得到“DBP”,不符合输出“GET”。选项D:输入4#,4对应的是“GHI”,t=1,取出第1个字符“G”;3#,3对应的是“DEF”,t=1,取出第1个字符“D”;8#,8对应的是“TUV”,t=1,取出第1个字符“T”,最终得到“GDT”,不符合输出“GET”。故答案为:B。
11.C
【详解】本题考查的是Python循环和分支语句的应用。range(1,5,2)生成1,3序列数。
k=1时,满足k<=1,执行m=1,也满足k<=2,执行m+=2(即m=m+2=3),执行s+=m(即s=s+m=3);
k=3时,不满足k<=1,也不满足k<=2,执行m+=3(即m=3+3=6),执行s+=m(即s=s+m=9)
故选C。
12.B
【详解】本题考查的是随机函数。随机产生点,其点的值应为实数,random.uniform(a,b)随机生成一个[a,b]范围内的实数,故本题应选B。
13.C
【详解】本题考查程序分析。该程序运行过程:
初始:sum=1,n=1
1<100成立,执行sum=sum*n=1*1=1,n=n+3=1+3=4;
1<100成立,执行sum=sum*n=1*4=4,n=n+3=4+3=7;
4<100成立,执行sum=sum*n=4*7=28,n=n+3=7+3=10;
28<100成立,执行sum=sum*n=28*10=280,n=n+3=710+3=13;
280<100不成立,输出sum为280,n为13
故正确答案为选项C。
14.B
【详解】本题考查的是Python列表。append函数会在列表后加上相应的元素,故程序执行的结果是:["石榴",1,"香蕉","橙子","梨子","猕猴桃"]。选项B正确。
15.A
【详解】本题考查数组的应用,b最终为二维数组,每个元素即为一个严格递增(可以不连续)的集合,最终结果,b[0]=[6,8,9,17],b[1]=[4,5],b[2]=[2,3]。故选择A。
16.B
【详解】本题考查的是算法特征。算法具有有穷性,故选项A说法错误;算法每一步骤必须确切地定义,选项B说法正确;算法至少要有一个输出,故选项C说法错误;算法可以用VB来实现,也可以用其它程序语言实现,故选项D说法错误。
17.B
【详解】本题考查的是Python多分支语句。选项A中,如果价格30万元(含)以上,满足if语句,不会执行elif语句,补贴0.5万元,不符合题意;选项C中,如果价格30万元(含)以上,也满足第二个if语句,补贴0.5万元,不符合题意;选项D中,如果价格30万元(含)以上,满足if语句,补贴0.5万元,不符合题意。故选B。
18. y==1?或y<=1?或y等于1吗? y←3y+1或y←3*y+1或y←3×y+1,←改为等号也算对 6
【详解】本题考查算法设计。
(1)根据题目描述可知,①处条件为“y等于1吗?”,也可表示为“y==1?”或“y<=1?”;②处表示y为奇数时的情况,根据题意可得y←3*y+1,也可以表示为y←3y+1;(2)y为10时,运算过程为:10→5→16→8→4→2→1,共运算6次。
19.i=i * 3
【详解】本题考查Python程序设计相关内容。分析程序段,其功能是计算表达式1+3+9+27+81+…+2187的值,由求和表达式t=t+i知,对应的加数为i*3,故本题答案是:i*3。
20.for 或 in
【详解】本题考查Python。在 Python 编程语言中,for和in通常结合使用来创建循环结构,实现对可迭代对象(如列表、元组、字符串等)的遍历,以依次处理其中的每个元素。故答案为:for 或 in。
21. 流程图
自然语言 伪代码
【详解】本题考查的是算法描述。算法的常用表示方法有3种:流程图、自然语言、伪代码。
22.确定
【详解】本题考查的是算法特征。确定性:算法执行的每一个步骤必须有确切的定义,不能出现模棱两可的情况。
23.正确
【详解】本题考查Python基础。
在Python中,当你执行 y = x 这样的语句时,你实际上并没有创建 x 的一个新副本,而是让变量 y 指向了 x 指向的同一个对象。这意味着 x 和 y 都引用了内存中的同一个列表对象,即内存地址相等,故表达式id(x) == id(y)的值为True。故正确。
24.错误
【详解】本题考查算法。算法可以用多种方式来描述,常见的有自然语言、流程图、程序设计语言等。自然语言描述较为通俗易懂,但可能存在模糊和歧义;流程图直观清晰,能更形象地展示算法的流程和逻辑;程序设计语言则可以直接实现算法。故说法错误。
25.正确
【详解】本题考查网络爬虫。网络爬虫就是一种能够按照一定的规则,自动地抓取万维网信息的程序或者脚本。它能够从网页中提取出所需的非结构化数据,并将其整理成结构化的形式,存储为本地的数据文件,以便后续的分析和处理。故说法正确。
26.正确
【详解】本题考查的是算法。衡量算法的优劣往往从时间复杂度和空间复杂度两个维度考虑,题干中的说法正确。
27.错误
【详解】本题考查的是Python的自定义函数。用户自定义函数通过return语句可以返回多个数值。故题干中的说法是错误的。
28.x=int(input("你拥有多少个印有"幸运""))
y=int(input("你拥有多少个印有"鼓励""))
if (x>=10) or (y>=20):
print("1")
else:
print("0")
【详解】本题考查Python程序综合应用。根据题干,可采用if...else...分支结构实现,具体代码如下:
x=int(input("你拥有多少个印有"幸运""))
y=int(input("你拥有多少个印有"鼓励""))
if (x>=10) or (y>=20):
print("1")else:
print("0")
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$