内容正文:
2.2 做出判断的分支
一、选择题
1.if语句属于( )
A.顺序语句 B.分支语句 C.循环语句 D.循环结构
2.下列伪代码中体现出来的程序算法结构是( )
A.顺序结构 B.循环结构 C.选择结构 D.三种结构都有
3.下面的Python程序段运行后的输出结果是( )
x=24
if x%2=1:
print(x,"是奇数。")
else:
print(x,"是偶数。")
A.24是奇数。 B.x是偶数。 C.x是奇数。 D.24是偶数。
4.某 Python 代码如下,执行后输出的结果是( )
L=['pear', 'apple', 'orange']
n=len(L[2])
ans=3
if n%2==0:
ans*=n
else:
ans+=n
ans-=5
print(ans)
A.13 B.3 C.18 D.8
5.下面Python代码运行后,a、b的值为( )
a=23
b=int(a/10)
a=(a-b*10)*10
b=a+b
print(a,b)
A.23 2 B.30 20 C.30 32 D.3 2
6.以下程序的运行结果是( )
A.sum=18 B.sum=9 C.sum=sum D.sum=0
7.在整数序列1到10(含1和10)中找出连续的数字,使其相加后的结果为20,Python程序如下
for i in range(1, 10):
sum=0; j=i
while ① and j<=10:
sum+=j
j+=1
if sum==20:
print("从", ② ,"到", ③ )
该程序的输出结果是“从2到6”,则划线处的代码为( )
A.①sum<=20 ②i+1 ③j-1 B.①sum<20 ②i ③j C.①sum<=20 ②i+1 ③j D.①sum<20 ②i ③j-1
8.有如下Python程序段:
a="2021"
b="21"
if a+b>b+a:
c=a*3
else:
c=b*3
print(c)
程序执行后,输出的结果是( )
A."202120212021" B."202121" C."212121" D."212021”
9.选择结构程序应用的分支语句是( )
A.if B.for C.while D.print
10.某Python程序如下:
p=")!@#$%^&*("
c="cra2edu"
t=""
for i in range(len(c)//2+1):
if i%2==0:
t+=c[len(c)-i-1]
elif c[i]>="0" and c[i]<="9":
t+=p[int(c[i])]
else:
t+=c[i]
print(t)
程序运行后,输出的结果是( )
A.ure@ B.ure@a C.ude@ D.cda!
11.有如下Python程序段:
# 输入3个整数分别存储到变量a、b、c中,代码略
if a > b and a > c:
maxn = a
elif b > a and b > c:
maxn = b
elif c > a and c > b:
maxn = c
print("a,b,c的最大值为:", maxn)
执行该程序段,输入下列4组测试数据,无法正确输出a、b、c的最大值的是( )
A.10,20,30 B.20,30,10 C.30,10,10 D.10,10,10
12.执行如下程序段后,输出的结果为( )
s="wz19Lht"
result=ch=""
flag=True
for i in range(len(s)):
ch = s[i]
if 'a'<=ch<='z':
if flag:
ch=chr(ord(ch)-ord('a')+ord('A'))
flag = not flag
elif '0'<= ch <='9':
ch = str((int(ch)+1)%10)
result = ch+result
print(result)
A.Wz02LHt B.tHL02zW C.WZ02LHT D.THL02ZW
13.有如下 Python 程序段:
import random
a=[0]*6
for i in range(6):
x=int(random.random()*10)+1
if i%2==1:
a[i]=2*x+1
elif x%2==0:
a[i]=x//2
else:
a[i]=x-1
print(a)
执行该程序段后,列表 a 中的值可能是 ( )
A.3,11,4,19,2,13 B.3,11,7,9,2,3
C.9,3,1,23,4,17 D.3,3,9,0,19,8
14.用python程序对分辨率为500*500的白色背景图像文件white.jpg(如图所示)进行处理,代码如下:
from PIL import Image
im = Image.open("white.jpg")
pix = im.load()
width = im.size[0] #获取图像宽度值
height = im.size[1] #获取图像高度值
for x in range(width):
for y in range(height):
if x<=width//2 and y<=height//2:
if x%50==0 or y%50==0 :
pix[x,y]=(0,0,0)
elif y>height//2:
if x==y or width-x==y :
pix[x,y]=(0,0,0)
im.show ()
white.jpg
程序执行后的图像效果是( )
A. B.
C. D.
15.某 Python 代码段如下,
x = 142; y = 125; z = 120
res = 0
if x > y:
res = x
elif y> z:
res = res + z
res = res - 5
print (res)
执行该程序段后输出的结果是( )
A.115 B.137 C.140 D.157
16.寻找最长无重复数字子串。输入一串仅由0~9组成的数字字符串,找出其中不含有重复字符的最长子串,若有多个长度相同的子串,则输出最后一个。如:输入数字字符串"1231255768",其最长的无重复数字子串有"3125"、"5678",则输出"5678",长度为4。实现该功能的python程序如下:
def repeat(s,x,y):#判断字符串s从位置x到y是否有重复字符
#无重复返回True(若x=y,为无重复),有重复返回Flase,代码略。
s1=input("请输入一个数字字符串: ")
len=len(s1)
left,right,maxlen=0,0,0
while right<len:
if not repeat(s1,left,right):
⑴ else:
if ⑵ :
maxlen=right-left+1
s2=s1[left:right+1]
⑶
print("最长无重复子串为: ",s2,"长度是: ",maxlen)
加框处的可选代码为:
①left+=1 ②right+=1 ③right-=1
④right-left>maxlen ⑤right-left+1>=maxlen
为使程序正确运行, 则程序段(1)(2)(3)处代码依次为( )
A.①④③ B.③⑤① C.②④① D.①⑤②
17.有如下Python程序段:
import random
n=5
data=[i+1 for i in range(n)]
random.shuffle(data) #将序列的所有元素随机排序
print(data)
flag=True;i=0
while i<n-1 and flag:
x=data[i]
for j in range(i+1,n):
if data[j] < data[i]:
if data[j] < x:
x=data[j]
else:
flag=False
break
i+=1
若执行该程序段后flag值是True,则输出的data值不可能的是( )
A.[2,3,4,1,5] B.[4,5,2,3,1] C.[1,3,2,5,4] D.[1,2,4,3,5]
二、填空题
18.Python表达式3+4*5%2**3的运算结果是( )
19.阅读下处程序写出运行结果
有四个嫌疑人甲乙丙丁涉嫌偷盗,其中一人是小偷。甲说“不是我”,乙说“是丙” ,丙说“是丁”, 丁说“丙在冤枉我”。若他们中只有一人说了假话,请编程判断谁是小偷。(注:在Python运算中,True的值为1, Fa1se的值为0)运行输出结果是
20.有如下程序段:
list1=[“an”,”alpha”,”around”,”bee”,”back”,”cake”]
leng=len(list1) #len( )函数用来计算列表长度
if leng>6:
z=list[0]
else :
z=list[leng-1]
print(z)
程序执行后,输出的结果为: 。
21.阅读下列程序,写出运行结果
警察抓小偷,有四个嫌疑人甲乙丙丁,其中一人是小偷。甲说“不是我”,乙说“是丙”,丙说“是丁”,丁说“丙在冤枉人”。他们中只有一人说了假话,编程判断谁是小偷。(注:在Python运算中,True的值为1,False的值为0)
persons=[’甲’,’乙’,’丙’,’丁’]
for thief in persons:
flag =(thief!=’甲’)+(thief==’丙’)+(thief ==’丁’)+(thief!=’丁’)
if flag == 3:
print(thief)
运行结果是:
22.有Python程序代码如下:
n=int(input("请输入一个整数n:"))
if n < 0 :
s = 0
elif n < 16 :
s = n ** 3
else :
s = n * n ** 2
print(s)
若要测试所有分支程序代码是否正确,请列举一组合适的数据
三、操作题
23.某密文是由一串数字加密得到的,其解密的规则是:①对连续重复的大写字母,仅保留1个;②在去重后的文本中,从首字符开始间隔5个字符取1个,一次连续取出的字符,即为明文。下图是程序运行的输入与输出结果。
s1=input('请输入密文:
')
s2=s1[0]
for i in range(1,len(s1)-1):
c=s1[i]
if 'A'<=c<='Z':
if ____①_______:
s2+=c
else:
s2+=c
mw=''
___②______
while i<=len(s2)-1:
mw=mw+s2[i]
i+=6
print('去重后的文本:',s2)
print('解密后的明文:',mw)
(1)若输入的密文为:MMM%@792tQQ()30AAbEEE8>2WWBA2$223PPPop,则输出的明文是
(2)请在划线处填入合适的代码,完善程序,实现功能
程序中划线①处应填的代码是
程序中划线②处应填的代码是
24.筛法求素数。埃拉托斯特尼筛法,简称埃氏筛或爱氏筛,是一种由希腊数学家埃拉托斯特尼所提出的一种简单鉴定素数的算法。要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数。
算法思想:先用2去筛,即把2留下,把2的倍数剔除掉;再用下一个质数,也就是3筛,把3留下,把3的倍数剔除掉;接下去用下一个质数5筛,把5留下,把5的倍数剔除掉;不断重复下去……
现在使用埃氏筛法求1~n之间的素数个数,代码如下:
n=int(input())
a=[1]*(n+1)
a[0],a[1]=0,0#标记小于2的数,0表示非素数,1表示素数
①
i=2
while i<=n:
if ② :
for j in range(2*i,n+1,i):
a[j]=0
i+=1
for i in range(n+1):
③
print(num)
(1) 请在划线处填入合适的代码。
(2) 若输入的值为20,则输出为 。
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.B
【详解】本题主要考查条件语句。if语句属于分支语句 ,for、while属于循环结构,故本题选B选项。
2.C
【详解】本题考查程序结构。这段伪代码中,根据年龄的不同情况进行判断,选择执行不同的输出语句,这体现了选择结构(也叫分支结构),而整个过程是依次按条件判断执行,没有循环过程,也不存在先执行后面的语句再回头执行前面语句的情况,所以主要体现的是选择结构,答案选C。
3.D
【详解】本题主要考查Python分支结构。分析程序可知,执行else部分,输出“24是偶数。”,故本题选D选项。
4.A
【详解】本题主要考查Python程序的执行。n=len(L[2])=6,ans=3,满足if判断条件,执行ans=ans*n=3*6=18,执行ans-=5后,ans=18-5=13,故执行后输出的结果是13,故本题选A选项。
5.C
【详解】本题主要考查Python程序执行。a=23,b=int(a/10)=2,a=(a-b*10)*10=30,b=a+b=32,故代码运行后,a、b的值为30、32,故本题选C选项。
6.A
【详解】本题主要考查Python程序的执行。分析程序,while循环条件是i<10,当i能整除3,执行sum+=i,满足条件的i有:0、3、6、9,故运行结果是sum=0+3+6+9=18,故本题选A选项。
7.D
【详解】本题主要考查Python程序的执行与调试。第一空如果填sum<=20,当sum=20时,会再执行sum+=j,则不符合题意,因此第一空是sum<20。最后一次循环j会多加1,因此输出结果是从i到j-1,故本题选D选项。
8.C
【详解】本题主要考查Python程序的执行。a="2021",b="21",则a+b="202121",b+a="212021",满足a+b<b+a,执行c=b*3="212121",故程序执行后,输出的结果是"212121",故本题选C选项。
9.A
【详解】本题程序设计语言相关内容。选择结构程序应用的分支语句是if,故本题应选A。
10.A
【详解】本题主要考查Python程序的执行。程序段实现了对字符串的处理。由“range(len(c)//2+1)”生成的序列为[0,1,2,3],循环执行4次。索引i为偶数时,在字符串c中取与c[i]对称的字符,因此i=0时,将字符“c”对称的字符“u”取出并拼接在字符串t中;索引i为奇数时,取出字符“r”并拼接在字符串t中;i=2时,将字符“a”对称的字符“e”取出并拼接在字符串t中;当c[i]为数字时,则在字符串p中以c[i]为索引取出字符“@”。故本题选A选项。
11.D
【详解】本题考查的是Python程序调试。阅读程序,可知当a、b、c三个数相等的时候,三个判断条件都不满足,找不到最大值,故本题应选D。
12.B
【详解】本题主要考查Python程序的执行。分析程序可知,当ch是小写字母时交替转换为对应大写字母,即转换为大写字母、不变、转换为大写字母、不变……,当ch是大写字母时不变,当ch是数字时循环后移一位,每次循环执行 result = ch+result,即将ch插入到result前面,因此输出的结果为tHL02zW,故本题选B选项。
13.A
【详解】本题主要考查Python程序的调试。random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0, x=int(random.random()*10)+1,则x随机生成1~10之间的整数。如果i是奇数,则 a[i]=2*x+1也是奇数,排除选项D;如果i和x是偶数,则a[i]=x//2可能是奇数也可能是偶数;如果i是偶数,x是奇数,则a[i]=x-1是偶数,选项C中a[0]=9不符合题意,选项B中a[2]=7不符合题意,均排除。故本题选A选项。
14.B
【详解】本题主要考查Python程序处理图像。分析程序可知,当满足if分支,即x<=width//2 and y<=height//2,即处理图像的第二象限,每隔50像素画一条线。当满足elif分支,即y>height//2时,即处理图像的第三、四象限,当满足y=x或y=width-x时,画一条线,选项B符合,故选B。
15.B
【详解】本题考查的是Python多分支语句。x = 142; y = 125; z = 120,满足x > y故执行res = x=142,跳过elif,再执行res = res-5=142-5=137。故选B。
16.D
【详解】本题主要考查Python程序的综合应用。① 如果满足not repeat(s1,left,right),则说明有重复了,则left递增1继续判断,故填left+=1。②由下一行更新了maxlen说明产生了新的最长字串,故if判断条件是right-left+1>=maxlen。③此处右端点right递增1,继续判断,故填right+=1,故选D选项。
17.B
【详解】本题主要考查Python程序的执行。若执行该程序段后flag值是True,说明若满足data[j]<data[i]的情况下,则循环一直满足data[j]<x。选项B中,当i=0时,x=data[0]=4,当j=2时,满足data[j]<x,赋值x=data[2]=2,当j=3时,满足data[j]<data[i],但不满足data[j]<x,赋值flag=False,循环结束,故输出的data值不可能的是[4,5,2,3,1],故本题选B选项。
18.7
【详解】本题考查Python运算符与表达式相关内容。3+4*5%2**3-->3+20%8-->3+4-->7。故本题答案是:7。
19.丙
【详解】本题主要考查Python程序的执行。分析程序可知,通过for循环遍历所有的可能,当thief是丙时,满足if判断条件,即一人说了假话,三人说了真话,flag=3,故运行输出结果是丙。
20.cake
【详解】本题主要考查Python程序执行。leng=len(list1) =6,不满足if判断条件,执行else部分, z=list[leng-1]= list[5]="cake",故程序执行后,输出的结果为:cake。
21.丙
【详解】本题主要考查 Python程序执行。分析程序可知,只有当thief=’丙‘时,满足flag=3,即4个人中只有一人说了假话,故运行结果是丙。
22. -1,15,16 或其他等价答案
【详解】本题考查的是Python多分支语句。阅读程序可知,程序由三个分支:小于0、大于等于0小于16、大于等于16。故测试数据可以是:-1,15,16 或其他等价答案。
23. 2022 c!=s1[i-1] i=5
【详解】本题主要考查Python程序的综合应用。①若输入的密文为:MMM%@792tQQ()30AAbEEE8>2WWBA2$223PPPop,去重后的文本:M%@792tQ()30AbE8>2WBA2$223Pop,从首字符开始间隔5个字符取1个,一次连续取出的字符,即为明文,则解密后的明文是2022。②变量 c 是字符串s1索引 i 处的字符,如果 c 是大写字母,并且如果 c 与前面相邻 i -1处的字符相等,则跳过该字符,如果不相等,则将 c 拼接到变量s2后面,从而达到去重,因此此处填c!=s1[i-1]。③从首字符开始间隔5个字符取1个,一次连续取出的字符,即为明文,因此i的初值为5,故此处填i=5。
24. num=0 a[i]==1或其他等价答案 num+=a[i]或num=num+a[i] 8
【详解】本题考查Python程序综合应用。
①变量num用于统计素数的个数,初值为0,故填num=0。
②列表a中,0表示非素数,1表示素数,如果a[i]=1,则通过for循环将该数的倍数剔除掉,即赋值a[j]=0,故此处填a[i]==1。
③此处通过for循环统计素数的个数,故填num+=a[i]或num=num+a[i]。
④若输入的值为20,则素数有:2、3、5、7、11、13、17、19,一共8个,因此输出为8。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$