内容正文:
第2单元 编程计算
一、选择题
1.下列程序运行后,在键盘输入100,则程序的运行结果是( )。
x=int(input("Please input x:"))
if x<0 or x>=20:
print(x//10)
elif 0<=x<5:
print(x)
elif 5<=x<10:
print(3*x-5)
elif 10<=x<20:
print(0.5*x-2)
A.10 B.100 C.295 D.48
2.平面上任意两点P1(x1,y1),P2(x2,y2,)间的距离公式为。小华用Python编写了计算平面上两点之间距离的程序如下所示,下列说法错误的是( )
import math
x1=y1=2
x2=y2=8
d=math.sqrt((x2-x1)**2+(y2-y1)**2)
print("两点之间的距离为:",d)
A.该程序代码中导入了math库,否则程序无法正常运行
B.“math.sqrt((x2-x1)**2+(y2-y1)**2)”的作用是计算平面上两点之间的距离
C.该程序中,变量x1、y1、x2、y2的数据类型为整数,变量d的数据类型是浮点数
D.该程序使用了循环结构
3.有如下Python程序段:
import random
a=[0]*6
i=0
while i<6:
a[i]=random.randint(1,9)
for j in range(i):
if a[i]==a[j]:
i-=1
i+=1
print(a)
该程序段执行后,列表a的值可能是( )
A.[7,1,6,3,2,1] B.[8,9,1,3,0,4]
C.[6,3,5,2,4,1] D.[5,7,3,3,8,2]
4.输入一个农历年份(>=1900),输出该年份对应的生肖,实现该功能的Python程序代码如下所示。
def shengxiao(y):
L1=["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]
i=(y-1900)%12
return L1[i]
year=input("请输入出生年份:")
print("你的生肖是:", )
则划线处应填入的代码是( )
A.shengxiao(y) B.shengxiao(int(y)) C.shengxiao(year) D.shengxiao(int(year))
5.某加密程序的代码如下:
def encrypt(code, key) :
code_new = '' ''
for i in range(len(code)):
code_new = code[(i+key)%len(code)] + code_new
return code_new
code = input('请输入加密字符串:')
key = int(input('请输入偏移位数:'))
print(encrypt(code,key))
当输入“Python”和“3”后,程序输出的结果是( )
A.mvqelk B.sbwkrq C.honPyt D.tyPnoh
6.在函数print()中,括号里的参数不可以是( )
A.字符串 B.变量名 C.表达式 D.文件名
7.从高度为h处释放一个小球,每次落地后弹起的高度是前一次的一半,直到小球弹起的高度不足p时视为结束,计算小球最终经过的路程s。算法流程图如图所示,①②两处应为( )
A.①h≥p? ②s=s+h*2;h=h/2 B.①h≥p? ②h=h/2;s=s+h
C.①h>p? ②s=s+h;h=h/2 D.①h>p? ②h=h/2;s=s+h*2
8.如下程序段功能为将十进制转换为二进制:
def DtoB(n):
if n==1:
return 'l'
else:
return
n=int(input('请输入正整数n:'))
print(DtoB(n))
则画线处代码为( )
A.DtoB(n//2)+str(n%2) B.str(n%2)+DtoB(n//2) C.DtoB(n%2)+str(n//2) D.str(n//2)+DtoB(n%2)
9.有如下python程序:
s="hez2023qj98qizhong5"
x,y=",'z'
for t in s:
if '0' <= t <= '9':
x+=t
elif y > t:
y=t
print(x+y)
程序运行后,输出结果为( )
A.2023985e B.2023985z C.29e D.290
10.以下程序的循环次数是( )
a=3
while a>0:
print(a)
a=a-1
A.1 B.2 C.3 D.无数次
11.下列选项的语句中,与“若 x 小于 0 则y=-1,否则 y=1”功能相同的是( )
A. B.
C. D.
12.判断整数x是否奇偶的部分Python 程序段如下:
if x%2==0:
y="even"
else:
y="odd"
下列选项中与上述语句块功能相同的是()
A. B.
C. D.
13.某 Python程序段如下:
s = "420play+2qQ"
res = ""
for i in range(len(s)):
if "0" <= s[i] <= "9":
res = s[i] + res
if i % 3 == 0 and "a" <= s[i] <= "z":
res = res + chr(ord(s[i]) - 32)
print(res)
执行该程序段后,输出的结果是( )
A.4202PYQ B.2024A C.PYQ4202 D.2024PYQ
14.如下 Python 程序段中,实现功能与其它三个不一样的是( )
A.
flag = a > b
B.
if a > b:
flag = True
else:
flag = False
C.
flag = True
if a <= b:
flag = False
D.
if a <= b:
flag = False
flag = True
A.A B.B C.C D.D
15.下面的代码,哪个选项会输出1,2,3三个数字( )
A.
for in range(3):
print(i)
B.
L=[0,1,2]
for i in L :
print(i+1)
C.
i=1
while i<3:
print(i)
i+=1
D.
for in range(4):
print(i+1)
A.A B.B C.C D.D
16.在python中,以下程序是计算1-100的奇数和,完善程序,第二行划线处应该填写( )
s=0
for x in range( ):
s=s+x
print(x)
A.1,2,100 B.1,3,100 C.1,100,2 D.1,99,2
17.有如下Python程序段:
from random import randint
s=[60,40,70,20,10,50]
m=randint(1,3)*2
for i in range(6, m,-1):
for j in range(5,i,-1):
if s[j-1]>s[j]:
t=s[j]
s[j]=s[j-1]
s[j-1]=t
print(s)
该程序段执行后,输出的结果可能是( )
A.[60,40,70,20,10,50] B.[10,60,40,70,20,50]
C.[10,20,60,40,70,50] D.[10,20,40,50,60,70]
18.某算法的流程图如图所示,若输入的n值为10987654321,则下列说法正确的是( )
A.该算法中包含两个循环结构 B.执行该流程后,输出的s值为30
C.语句“n>0?”与“r%2=0?”执行的次数相同 D.执行该流程后,变量r的值为1
19.已知S=1+2+3+……+N, 找出一个最大整数N,使得S<3000。编写程序解决此问题,最合适的程序结构是( )
A.环型结构 B.顺序结构 C.循环结构 D.分支结构
20.在计算机解决问题的过程中,往往需要重复多次运行程序代码来检测是否有语法错误和能否达到预期的目的。这一过程是( )
A.分析问题 B.设计算法 C.调试运行 D.编写程序
21.桶排序并非常规的排序算法,它实际上是一种分治思想的实践。桶排序的过程可以分为4步:1-根据数据的特征将数据分为若干的桶,给每个桶规定可以存储的值的范围;2-将原数列的数据放入各个桶中;3-对每个桶都进行排序;4-按照桶的顺序将桶内数据重新链接。有如下Python程序段:
def bucket_sort(a):
bucket=[]
b=[]
bucketnum=(max(a)-min(a))//len(a)+1 #根据数据特征确定桶数量
for i in range(bucketnum): #建桶
①
for x in a: #入桶
num=(x-min(a))//len(a)
②
for i in range(bucketnum):
bucket[i].sort() #详见“注意”
b+=bucket[i]
return b
a=[77,7,26,14,11,21,60,51,30,78]
print(bucket_sort(a))
#运行结果
[[7,11,14],[21,26],[30],[],[51],[60],[],[77,78]]
注意:桶排序更多适用与数据值域较大但分别较均匀的情况,其本质也只是用于分段,对于桶内数据一般不会再使用桶排序递归,而是采用更高效的排序算法。故在桶内排序时也直接使用了sort()方法加以区分和说明。
根据题意,划线处①、②两个空分别填入的代码为( )
A.①bucket.append([]) ②bucket[num].append([]) B.①bucket.append(i) ②bucket[num].append(x)
C.①bucket.append(i) ②bucket[num].append([]) D.①bucket.append([]) ②bucket[num].append(x)
22.将字符串s(仅包含小写字母)依据规则划分为几个子串。划分规则为同一个字母只出现在同一个子串中,且划分的子串尽可能的多。例如字符串为“arrayiybikk”,按照规则最多可以划分为“arra”、“yiybi”、“kk”3个子串。实现上述功能的程序段如下:
p={};s=input("")
for i in range(len(s)):
p[s[i]]=i
i=0
while i<len(s):
n=p[s[i]]
(1)
while j<=n:
if p[s[j]]>n:
n=p[s[j]]
(2)
print(s[i:j])
(3)
上述程序段中方框处可选代码为:①i=j、②i=i+1、③j=i-1、④j=i+1、⑤j=j+1
则(1)、(2)、(3)处代码依次为( )
A.④⑤① B.③⑤① C.④⑤② D.③⑤②
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
学科网(北京)股份有限公司
参考答案:
1.A
【详解】本题主要考查多分支条件结构。因为x=100大于20,所以执行x//10=100//10=10,故程序的运行结果是10,故本题选A选项。
2.D
【详解】本题考查Python基础。因为给出的Python程序并没有使用任何循环结构(如for或while循环),它仅仅是一系列顺序执行的语句,用于计算并打印两点之间的距离。故正确答案为:选项D。
3.C
【详解】本题考查Python基础。
随机数生成1到9,故不可能出现0。排除选项B。由于程序功能不可能出现两个相同的数,故排序选项A、D。故正确答案为:选项C。
4.D
【详解】本题考查Python程序设计相关内容。分析程序段,其功能是输入年份,输出对应的生肖。在Python中,input() 函数接受一个标准输入数据,返回为string类型。依据程序段,年份应转换为int型数据,再通过调用shengxiao函数实现题目要求,即:shengxiao(int(year))。故本题答案是D选项。
5.D
【详解】本题主要考查Python程序的执行。列表索引从0开始,每次通过计算,取code索引为(i+k)%len(code)的值,之后再将该字符逆序拼接到字符串code_new中,如第一次循环,i=0,计算得到code_new="h"+code_new="h",其他依次类推,可以得到程序输出的结果是tyPnoh,故本题选D选项。
6.D
【详解】本题考查Python函数。print()函数用于将指定的内容输出到控制台。在print()函数中,括号内的参数可以是字符串、变量名或表达式,用于指定要输出的内容。文件名不是print()函数的有效参数类型,因为print()函数不用于打开或处理文件,而是用于输出内容到控制台。故答案为:D。
7.A
【详解】本题考查算法流程图相关内容。分析题目内容及流程图,推知,若h≥p成立,重复执行循环体,即计算路程s,由“从高度为h处释放一个小球,每次落地后弹起的高度是前一次的一半”知,路程s计算公式为s=s+h*2,当前弹起的高度是前一次的一半,即h=h/2,所以①处应填写:h≥p?,②处应填写:s=s+h*2;h=h/2。故本题答案是A选项。
8.A
【详解】本题考查Python程序设计相关内容。本题利用递归算法完成十进制到二进制的转换,十进制转换二进制转换规则:十进制整数转换为二进制整数采用“除2取余,逆序排列”法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时停止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,以此类推,依次排列起来。根据除二取余法,要不断调用DtoB函数,直至n=1满足递归结束条件。故本题答案是A选项。
9.A
【详解】本题考查Python程序执行与调试。分析程序,可知变量x保存字符串s中的数字,因此x="2023985",若t是字母,且y>t(y='z')时,则更新y=t,即y保存最小ASCII码对应的字母,字符串s中的字母,字符'e'是最小的,因此y=‘e’,输出x+y="2023985e"。故选A。
10.D
【详解】本题主要考查Python循环结构。语句a=a-1没有缩进,不是while的循环体,不会改变a的值。a=3,循环条件a>0一直成立,故循环次数为:无数次。本题应选D。
11.B
【详解】本题主要考查Python分支结构。结合选项,与“若 x 小于 0 则y=-1,否则 y=1”功能相同的是 ,故本题选B选项。
12.C
【详解】本题考查的是Python选择语句。选项A在x为偶数y="old",与题干给的程序不符;选项B语句格式不对,else后不用写条件表达式;选项Dx为偶数y="old",奇数y="even",与题干给的程序不符。故本题应选C。
13.D
【详解】本题考查程序分析能力。当字符是数字时候,将数字向前累计拼接到res上。当索引能被3整除且是小写字母时候,则转化成大写字符并向后拼接累计到res后面。故正确答案为D选项。
14.D
【详解】本题考查的是Python选择语句。选项ABC中,如果a>b,则flag = True,如果a <= b,则flag = False。选项D中不管a、b关系如何,最后flag都为True。故选D。
15.B
【详解】本题主要考查Python代码。A项代码结果:0 1 2, B项代码结果:1 2 3, C项代码结果:1 2,D项代码结果:1 2 3 4,故本题选B。
16.C
【详解】本题考查的是range函数。格式:range(起始值,结束值,步长)结束值不包含,步长可省略,默认为1。计算1-100的奇数和,故起始值为1,结束值为100(最后一个奇数为99),步长为2。选项C正确。
17.A
【详解】本题主要考查Python程序的执行与调试。m=randint(1,3)*2,m随机生成2、4、6,当m=2时,a[3]~a[5]成升序状态,s=[60,40,70,10,20,50];当m=4时,a[4]~a[5]成升序状态,s=[60,40,70,20,10,50];当m=6时,s不变,故输出的结果可能是[60,40,70,20,10,50],故本题选A选项。
18.D
【详解】本题考查的是流程图识读。该算法中包含一个循环结构;该算法的功能是将输入的n值中,数位上为偶数累加到s中,n值为10987654321,s=2+4+6+8+0=20;语句“n>0?”比“r%2=0?”执行多执行1次;r表示是n值中个位、十位……的数字,故执行该流程后,变量r的值为1。本题应选D。
19.C
【详解】本题考查的是程序的循环结构。循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。它由循环体中的条件,判断继续执行某个功能还是退出循环。本题有“S<3000”适合循环结构实现。故选项C正确。
20.C
【详解】本题考查计算机解决问题的步骤。计算机解决问题的基本过程一般包括以下几个步骤:
分析问题:了解问题的含义、目的和需求,明确问题的范围和限制,确定解决问题的目标和可行性。
设计算法:根据问题的特点和需求,设计出解决问题的算法,包括问题的分解、抽象和归纳等。
编写程序:使用编程语言实现算法,将问题转化为计算机可执行的形式。
调试程序:测试程序的正确性和稳定性,发现并修复潜在的错误和缺陷,确保程序能够正常运行。
故答案为C选项。
21.D
【详解】本题考查Python程序分析。根据代码中注释可知,需要新建空列表作为桶,空列表个数存储在bucketnum中,故需要在列表bucket追加bucketnum个列表。代码为bucket.append([]) 。根据注释提示可知,需要遍历列表a,将元素追加到相应的桶中,故代码为bucket[num].append(x)。故选D。
22.A
【详解】本题主要考查Python程序的执行与调试。for循环中, p[s[i]]=i用于记录字符串s中相同字母最后一次出现的位置,第一空设置j的初值,n=p[s[i]],n保存s[i]最后一次出现的位置,而嵌套while中依次比较p[s[j]]>n,因此j的初值为i+1,即第一空填j=i+1。第二空循环变量j递增1,继续循环,因此填j=j+1。内层循环结束后,需要更新i的值为j继续下一个字串的划分,第三空填i=j,故本题选A选项。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$