内容正文:
2.2 做出判断的分支
一、选择题
1.阅读下列Python程序段,程序输出结果应为( )
a,b,c=3,2,3
if a>b and a>c:
print(a)
if b>a and b>c:
print(b)
if c>a and c>b:
print(c)
A.两个3 B.一个3 C.三个3 D.没有任何输出
2.用Python语言实现“每满100减20,每满200减50,可以累计上不封顶”的优惠金额算法,设s为购买商品的原价,计算优惠金额t,下面选项正确的是( )
A.
t=s//100*20
if s//200>0:
t+=s//200*50
B.
t=s//200*50
if s%200>=100;
t=t+20
C.
if s>=200:
t=s//200*50
else:
t=s//100*20
D.
if s>=100:
t=t//100*20
else:
t=t//200*50
A.A B.B C.C D.D
3.以下是4位Python初学者为解决“分别统计[1000,2000]以内个位数是4的整数个数k1以及十位数和百位数之和等于6的整数个数k2”这一问题而编写的程序代码,其中算法思想错误的是( )
A.B.
C. D.
4.下列程序实现了输入k,找出大于k的数据的起始索引位置并显示
a=[1,3,3,5,5,7,10,11,12,15]
n=10
k=int(input())
i=-1
j=
while i < j:
m=(i+j+1)//2
if k < a[m]:
j=
else:
i=m
L=
print(">",k,"的数据索引起始位置为",L)
上述程序段横线处语句依次为( )
A.n m-1 i B.n-1 m-1 i+1
C.n m+1 i D.n-1 m+1 i+1
5.下面是一段程序中的部分代码,其中有( )处错误。其实现的功能是:输入任意整数a、b,判断b的值是否为零,如果不等于0,则输出(a-b)/b,否则输出“错误”。
A.1 B.2 C.3 D.4
6.执行如下代码:
c=0
num=[1,2,3,4]
def fun(num):
global c
for i in range( 5 ) :
c+=1
num.append(c)
return num
print(fun(num), num ,c)
则程序执行后输出( )
A.[1,2,3,4] [1,2,3,4]
B.[1, 2, 3, 4, 5] [1,2,3,4] 0
C.[1, 2, 3, 4, 5] [1,2,3,4] 5
D.[1, 2, 3, 4, 5] [1, 2, 3, 4, 5] 5
7.有如下程序:
s="Happy New Year!"
m=____________________
if m=="Happy":
print("Happy to you!")
elif m=="Year":
print("Good Luck!")
else:
print("It's a fine Day!")
若想运行结果是"Good Luck!",则划线处代码可能是( )
A.s[9:13] B.s[10:13] C.s[-5:-2] D.s[-5:-1]
8.有如下python程序段:
from random import randint
n=input("请输入一串数字:")
k=randint(0,len(n)) #randint用于随机生成[0,len(n)]之间的整数
for i in range(k):
for j in range(len(n)-1):
if n[j]>n[j+1]:
break
else:
n=n[:len(n)-1]
continue #continue跳过当前循环的剩余语句,直接进行下一轮循环
n=n[:j]+n[j+1:]
执行该程序段后,输入“1529”,则变量n可能是( )
A."9" B."12" C."152" D."1259"
9.利用列表模拟栈的操作,python程序如下,程序运行后sum的值为( )
st=[2,4,7,10,9,7,8,-5,3,6]
f=True;top=-1;sum=0
for i in range(len(st)):
if st[i]%5<=3:
top+=1
st[top]=st[i]
else:
top-=1
while top!=-1:
if f:
sum+=st[ top]
top-=1;f=not f
A.8 B.12 C.16 D.22
10.有如下Python程序段:
import random
a=[23,5,2,8,11,19]
x=random.randint(1,3)
for i in range(x):
for j in range(len(a)-1,i,-1):
if a[j] < a[j-1]:
a[j],a[j-1]=a[j-1],a[j]
print(a[0:4])
程序段执行后,输出的结果不可能是( )
A.[2,23,5,8] B.[2,5,23,8] C.[2,5,8,23] D.[2,5,8,11]
11.有如下程序段:
bt=["A","B","C","D",None,"E","F"]
result=[]
stack=[]
i=0
while stack or (i<len(bt) and bt[i] is not None):
if i < len(bt) and bt[i] is not None:
stack.append(i)
i=2*i+1
else:
i=stack.pop()
result.append(bt[i])
i=2*i+2
print("-".join(result))
则程序运行后输出的结果为( )
A.A-B-D-C-E-F B.D-B-E-F-C-A C.D-B-A-E-C-F D.A-B-C-D-E-F
12.在Python语言中,运行以下程序,输入数值 100,显示的运行结果是 ( )
a= int(input()) # 输入一个数给变量a
if a<= 100:
print("YES")
A.100 B.无结果 C.a D.YES
13.判断变量a是否大于0的语句是( )
A.if a>0: B.if a>0 C.if(a>0) D.if a>0;
14.在 Python中,表达式"12"+"3"的值为( )
A.15 B."15" C.123 D."123"
15.下面Python程序运行后,变量m,n的值分别是( )
n,m=7,4
if n>m:
n=m
m=n
A.4,4 B.7,7 C.7,4 D.4,7
16.为优化英文字符串的存储空间,现规定:用一个字符和一个数值代替字符串中的连续升序段(相邻字符的ASCII码值增量为1)。例如输入字符串“abcmnk”,压缩后为“a3m2k1”。实现上述功能的Python 程序如下:
s=input("请输入字符串:")
n=len(s);flag=False;ans="";c=1
for i in range(0,n-1):
if (1) :
ans=ans+s[i]
flag=True
c=c+1
elif ord(s[i])+1!=ord(s[i+1]):
ans=ans+str(c)
flag=False
c=1
else:
c=c+1
if (2) :
ans=ans+str(c)
else:
ans=ans+s[i+1]+str(c)
print("压缩后的字符串为:",ans)
划线处可选语句有:
①flag=True ②flag=False
③ord(s[i])+1==ord(s[i+1]) and flag==False
④ord(s[i])+1==ord(s[i+1]) and flag==True 下列代码顺序正确的是( )
A.④① B.④② C.③① D.③②
17.某python程序如下:
s=[3,3,3,6,6,8,11,11,9,4,2,5]
r=[]
for i in range(1,len(s)-1):
if not(s[i-1]<s[i]<s[i+1] or s[i-1]>s[i]>s[i+1]):
if s[i-1]==s[i]:
continue
j=len(r)-1
while j>=0 and s[i]<=s[r[j]]:
j-=1
if j==len(r)-1 or j==-1:
j+=1
r=r[:j]+[i]+r[j:]
print(r)
程序运行后,输出的结果为( )
A.[3,6,10] B.[6,11,2] C.[6,3,10] D.[10,3,6]
二、填空题
18.Python关键字elif表示 与 两个单词的缩写。
19.以下Python程序段的运行结果是 。
x=25
y=15
if x/5==int(x/5):
x = x + y
else:
y = x – y
print (x , y)
20.阅读下列Python程序,写出运行结果。
a=5
if (a>3) and ((a==4) or (a<6)):
print("Hello")
else:
print("Bye")
运行结果是:
21.有Python程序代码如下:
n=int(input("请输入一个整数n:"))
if n < 0 :
s = 0
elif n < 16 :
s = n ** 3
else :
s = n * n ** 2
print(s)
若要测试所有分支程序代码是否正确,请列举一组合适的数据
22.阅读下列程序,写出运行结果
警察抓小偷,有四个嫌疑人甲乙丙丁,其中一人是小偷。甲说“不是我”,乙说“是丙”,丙说“是丁”,丁说“丙在冤枉人”。他们中只有一人说了假话,编程判断谁是小偷。(注:在Python运算中,True的值为1,False的值为0)
persons=[’甲’,’乙’,’丙’,’丁’]
for thief in persons:
flag =(thief!=’甲’)+(thief==’丙’)+(thief ==’丁’)+(thief!=’丁’)
if flag == 3:
print(thief)
运行结果是:
三、操作题
23.数字盲盒游戏
爸爸和明明玩数字盲盒游戏,盲盒里有1-6六个数字的球,他们约定谁拿出的数字大,谁就赢。请在序号处填写正确的代码,且不改变原程序的结构,并把序号删除,调试完成后保存文件。
D = int(input("爸爸的数字是(1-6):"))
M =① (input("明明的数字是(1-6):"))
if D6 or M6:#只要有一个条件不满足就是超出范围
print("输入的数字超出范围!")
else:
if (D > M):
print("爸爸赢啦!")
elif (② ):
print("明明赢啦!")
③ :
print("平局啦!")
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.D
【详解】本题考查Python分支结构。给定变量a、b、c的值分别为3、2、3。首先,第一个条件语句if a>b and a>c不成立,因为a并不大于b和c,所以与该条件相关的print(a)不会执行。接着,第二个条件语句if b>a and b>c也不成立,因为b并不大于a和c,所以与该条件相关的print(b)也不会执行。最后,第三个条件语句if c>a and c>b也不成立,因为c并不大于a和b,所以与该条件相关的print(c)也不会执行。因此,整个程序没有任何输出。故答案为:D。
2.B
【详解】本题考查分支语句的作用。由于优惠条件中,一个200元的优惠幅度比两个100元的更大,因此应该优先凑200元的整数,然后再看100元的。故选B。
3.A
【详解】本题考查Python代码。原始代码中,虽然通过if条件判断是否个位数是4,但在elif语句中并没有考虑个位数是4的情况。因此,如果个位数是4且十位数和百位数之和等于6,程序会直接跳过这个数字,导致k2的统计结果不准确。故答案为:A。
4.B
【详解】本题主要考查对分查找算法及Python程序实现。列表的索引从0开始,i是左端点,j是右端点,m=(i+j+1)//2,故j的初值为n-1;如果k < a[m],说明k在a[m]的左边,应更新j=m-1,否则说明k在a[m]的右边,应更新i=m。找出大于k的数据的起始索引位置,循环结束后,查找到的起始索引值应在i的右边,即i+1,故本题选B选项。
5.C
【详解】本题主要考查Python分支结构。if语句后面需要跟冒号,if语句后print语句的格式也不对,else部分即与if判断条件相反,else后面的b=0可省略,一共有3处错误,故本题选C选项。
6.D
【详解】本题主要考查Python程序执行。fun函数接收一个列表num,循环结束后c的值为5,将c追加到列表num中并返回num,num=[1,2,3,4],故fun(num)执行完,返回值num为[1, 2, 3, 4, 5],程序执行后输出程序执行后输出[1, 2, 3, 4, 5] [1, 2, 3, 4, 5] 5,故本题选D选项。
7.D
【详解】本题主要考查Python程序字符串切片操作。切片操作基本表达式:object[start_index:end_index:step],step:正负数均可,其绝对值大小决定了切取数据时的“步长”,而正负号决定了“切取方向”,正表示“从左往右”取值,负表示“从右往左”取值。start_index:表示起始索引(包含该索引对应值),该参数省略时,表示从对象“端点”开始取值。end_index:表示终止索引(不包含该索引对应值),该参数省略时,表示一直取到数据“端点”。运行结果是"Good Luck!",说明m="Year",s="Happy New Year!",s[-5:-1]="Year",故本题选D选项。
8.B
【详解】本题主要考查Python程序的执行。n="1529",len(n)=4,k=randint(0,len(n)),即k可取值是0、1、2、3、4。当k=0时,循环结束后,n="1529";当k=1时,循环结束后,n="12";当k=2、3、4时,循环结束后,n均为空值,故本题选B选项。
9.A
【详解】本题考查栈的操作。分析程序,第一个for循环,当满足st[i]%5<=3,则该元素入栈,否则出栈一个元素。因此循环执行完栈顶元素到栈底元素依次是:6、3、-5、8、7、7。第二个while循环实现从栈顶到栈底间隔一个元素累加求和,因此sum=0+6-5+7=8。故选A。
10.D
【详解】本题主要考查Python程序的执行与调试。x=random.randint(1,3),x随机产生1、2、3,当x=1时,循环执行完,a=[2,23,5,8,11,19],a[0:4]=[2,23,5,8];当x=2时,循环执行完,a=[2,5,23,8,11,19],a[0:4]=[2,5,23,8];当x=3时,循环执行完,a=[2,5,8,23,11,19],a[0:4]=[2,5,8,23],因此输出的结果不可能是[2,5,8,11],选D选项。
11.C
【详解】本题主要考查Python中stack()用法。分析程序可知,前3轮循环,即当i=0、1、3时均满足if判断条件,此时stack=[0,1,3],接下来i=2*i+1=7不满足if判断条件,执行else部分, i=stack.pop()=3,result.append(bt[i])=["D"],i=2*i+2=8,继续执行else,i=stack.pop()=1,result.append(bt[i])=["D","B"],i=2*i+2=4,不满足if判断条件,继续执行else部分,i=stack.pop()=0,result.append(bt[i])=["D","B","A"],此时结合选项可知程序运行后输出的结果为D-B-A-E-C-F,选C选项。
12.D
【详解】本题考查的是Python选择语句。输入数值100,即a=100,满足a<= 100,执行print("YES"),故本题应选D。
13.A
【详解】本题考查的是Python选择语句。在Python中,if语句条件后面跟的是冒号。故本题应选A。
14.D
【详解】本题考查的是Python表达式。加上双引号表明12、3是字符串,在字符串运算中“+”表示字符串的连接。故表达式"12"+"3"的值为"123"。选项D正确。
15.A
【详解】本题考查的是Python选择语句。初始n=7,m=4。n>m成立,执行n=m=4,m=n=4。故选A。
16.C
【详解】本题主要考查Python程序的执行与调试。Flag初值为False,当第一次出现连续的升序段时,执行ans=ans+s[i],同时赋值flag为True,后续再出现连续升序段时,只需要执行else部分,c递增1即可,因此①处判断条件是ord(s[i])+1==ord(s[i+1]) and flag==False。此处if分支结构用于处理最后一个字符的情况,如果flag=False,则执行ans=ans+s[i+1]+str(c),即将最后一个字符和数字拼接到变量ans中,故此处if判断条件是flag=True,故本题选C选项。
17.D
【详解】本题考查Python程序执行与调试。当i=1、2时,均满足s[i-1]=s[i],跳过本轮循环;当i=3时,r=r[:j]+[i]+r[j:]=[3];当i=4时,执行continue跳过本轮循环;当i=5时,不满足第一个if判断条件,跳过;当i=6时, r=r[:j]+[i]+r[j:]=[3,6];当i=7时,执行continue跳过本轮循环;当i=8、9时,不满足第一个if判断条件,跳过;当i=10时,r=r[:j]+[i]+r[j:]=[10,3,6]。循环结束。程序运行后,输出的结果为[10,3,6]。故选D。
18. else if
【详解】本题主要考查Python分支结构。Python关键字elif表示else与if两个单词的缩写。
19.40 15
【详解】本题主要考查Python程序分支结构的应用。x=25,y=15,满足if判断条件,执行x=x+y=40,执行print (x , y)后运行结果是40 15。
20.Hello
【详解】本题主要考查Python分支结构。逻辑运算符or两边值均为假时值才为假,否则值为真;逻辑运算符and两边值均为真时值才为真,否则值为假,not是取反。a=5,满足if判断条件,输出结果是:Hello。
21. -1,15,16 或其他等价答案
【详解】本题考查的是Python多分支语句。阅读程序可知,程序由三个分支:小于0、大于等于0小于16、大于等于16。故测试数据可以是:-1,15,16 或其他等价答案。
22.丙
【详解】本题主要考查 Python程序执行。分析程序可知,只有当thief=’丙‘时,满足flag=3,即4个人中只有一人说了假话,故运行结果是丙。
23. int M>D,D<M else
【详解】本题考查Python程序设计相关内容。分析题目内容及程序段,推知:①处,该行通过input函数输入的数据为字符型,需要转换成整型,故此处应填写:int。②处,当明明的数字比爸爸的数字大时,明明赢,故此处应填写:D<M 或 M>D。③处,if...elif...else为多分支选择结构,可实现题目要求,故此处应填写:else。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$