内容正文:
2.2 做出判断的分支
一、选择题
1.某商场做促销打折活动,消费金额500元以内打8.8折;大于500元(含500元)且小于1000元打8折;1000元以上(含1000元)打7折。小曲使用Python 编写了下面程序,第4行下划线处应填写的代码是( )
1 x=float(input(“消费金额:”))
2 if x<500:
3 s=x*0.88
4 x<1000:
5 s=x*0.8
6 else:
7 s=x*0.7
8 print(“应付金额为:”,s)
A.if B.elif C.else D.while
2.学校举行大合唱比赛,每个班级演唱结束后会有10个评委打分,最终得分的计分规则为:去掉一个最高分,去掉一个最低分,求平均分。
编程Python程序,实现快速计分,代码如下:
n=10
scores, maxs, mins=0, 0, 10
for i in range(n):
s=float(input("第"+str(i)+"个评委给分:"))
if maxs < s:
maxs=s
elif mins>s:
mins=s
scores+=s
avg=____________
print("平均分为:"+str(round(avg,2)))
以下关于该程序的说法正确的有( )
A.将“elif”改为“if”,程序功能不变
B.划线处代码为“(scores-maxs-mins)/n-2”
C.倒数第2行代码取消缩进,算法更加优化
D.此程序段只适用于满分不超过10的情况
3.下面的Python代码实现了读入若干非负整数,统计其中奇数个数的功能。要想实现这一功能,应该在空格处填( )。
li = map(int, input(). split())
cnt=0
for i in li:
if ______ :
cnt+=1
print("奇数有{}个。". format(cnt))
A.i%2==1 B.i%2 C.i//2==1 D.i/2==1
4.“最强大脑”游戏问题的算法分析:显示游戏规则,显示物品以及编号,屏幕停留10秒;随机出题,给出物品,回答编号;判断回答是否正确,如果正确,则答对的题数加1。重复以上步骤,直到答完5道题;显示答对的题数( )
import random;import time;import os
print("你好,现在你有 10 秒钟的时间记忆下列物品及其编号")
things=["苹果","香蕉","橙子","梨子","猕猴桃","柚子","猴魁","铁观音","彩蛋","复活节"]
for i in range(10):
print(i,":", ① ); #在屏幕上显示编号及物品名称
time. sleep(10) #延时 10 秒
os. system("cls") #清屏幕,隐去编号及物品
n=0 #记录答对的题数,初值为 0
t2=random. sample( ② ,5) #随机抽出 5 个物品
for i in t2: #出 5 题
ans=int(input(i + "的编号是:")) #输入编号答题
if i== ③ :
n=n+1 #如果回答正确,答对的题数加 1
print("
你一共答对了",n,"次") #屏幕显示答对的题数
input("
按回车键结束程序")
A.①things[i] ②things ③things[ans]
B.①things ②things ③things[i]
C.①things[i] ②things[i] ③things[ans]
D.①things[ans] ②things[ans] ③things[i]
5.对于不等于0的整数a和b,若表达式a%b==1成立,则表明( )
A.a与b一定相等 B.a总比b大1
C.a不是负数,b肯定也不是负数 D.a比b的整数倍多1
6.有如下 Python 程序段:
import random
a= [0]*6
a[0] =random.randint(95,100)
for i in range(1,6) :
a[i] = a[i-1]-random.randint(0,5)
if i%2==0 :
a[i] = a[i]+ a[i] % 10
print(a)
执行该程序段后,输出的内容不可能的是 ( )
A.[99,96,98,93,96,96]
B.[99,96,97,93,99,96]
C.[100,98,106,106,104,103]
D.[97,94,98,98,102,100]
7.字符串s='a
b\tc',则len(s)的值是( )。
A.7 B.6 C.5 D.4
8.某Python程序实现的功能是;运行程序输入一个四位整数,能够判断该四位整数是否存在数字重复的位。程序代码如下:
n = int(input(“请输入一个四位正整数:”))
f = [0] * 10
while n > 0:
y = n % 10
①
n=n // 10
if ② :
print(“没有重复的位。”)
else:
print(“有重复的位。”)
划线处的代码应填( )
A.① f[y] = 1 ② sum(f) < 4 #sum()将列表中所有元素求和
B.① f[y] += 1 ② sum(f) < 4
C.① f[y] = 1 ② sum(f) == 4
D.① f[y] += 1 ② sum(f) == 4
9.有如下Python 程序段:
n=int(input( ))
s=0;i=1
while i*i<=n:
if i==n//i:
s+=1
elif n%i==0:
s+=2
i+=1
print(s)
若输入"16",该程序段执行后,输出的结果是( )
A.3 B.4 C.5 D.6
10.python中eval()函数用来执行一个字符串表达式,并返回表达式的值,语句eval('2+4/5')执行后的输出结果是()
A.2.8 B.2 C.2+4/5 D.'2+4/5'
11.有如下Python程序段
s="aabbccabc"
st=s[1]
for i in range(1,len(s)):
if len(st)==0 or s[i]!=st[len(st)-1]:
st=st+s[i]
else:
st=st[0:len(st)-1]
print(st)
运行该段代码后,输出结果为( )
A.abc B.abcabc C.ababc D.aabbc
12.如下Python程序段
x = -2.5
if x > 0 :
print (1)
elif x == 0 :
print (0)
else:
print( -1)
运行后的结果是( )
A.-2.5 B.0 C.1 D.-1
13.有如下Python程序段:
m=3
1st=[7,3,4,3,1,6,3]
for i in range(len(lst) -1):
for j in range(len(lst) -1,i,-1):
if 1st[j] <1st[j-1]:
1st[j], 1st[j-1] = 1st[j-1], 1st[j]
break
执行该程序段,加框处语句被执行的次数是( )
A.3 B.4 C.5 D.6
14.程序代码如下:
age=float(input(“请输入年龄=”))
HRrest=float(input(“请输入安静心率=”))
gender=input(“请输入male或female:”)
n=220
else:
n=210
low=(n-age-HRrest)*0.6+HRrest
high=(n-age-HRrest)*0.8+HRrest
print(“最适宜运动心率是:”,low,”~”,high)
横线上应填入的内容是( )
A.if gender=male: B.if male==gender:
C.if gender==male: D.if gender==”male”:
15.有两个降序序列的链表a,b。现将链表b中的数据合并到链表a,形成一个新的降序序列存于链表a,实现数据合并的代码段如下:
a = [[98,1],[96,2],[95,3],[93,4],[90,-1]];b = [[99,1],[97,2],[94,3],[93,4],[92,-1]]
head_a = head_b = 0
pre = p = head_a;q = head_b
while q!=-1:
if p!=-1 and (1) :
pre=p
p=a[p][1]
else:
a.append( (2) )
if p==head_a:
pre=head_a=len(a)-1
else:
a[pre][1]= (3)
pre=len(a)-1
q=b[q][1]
上述程序段中可选填的语句为:
①a[p][0]>= b[q][0] ② a[p][0]<= b[q][0] ③q
④len(a)-1 ⑤[b[p][0],q] ⑥[b[q][0],p]
则划线处填写的语句依次为:( )
A.①⑥④ B.①⑤④ C.①⑥③ D.②⑥③
16.下列变量的命名遵循的规则,不正确的是( )
A.可以用数字开头 B.区分大小写 C.可以用下划线开头 D.不能使用保留字
17.有如下程序段: 若程序运行后输入20,打印出的score的值为( )
score = int(input("请输入分数:"))
if score > 60:
score += 20
score += 10
print(score)
A.60 B.40 C.30 D.20
18.某二分查找算法的Python程序段如下:
list1=["Carrot","Celery","Garlic","Lettuce","Mooli","Onion","Potato","Tomato"]
key=list1[2]
left,right=0,len(list1)-1
c=0
while left<=right:
m=(left+right)//2
c=c+1
if list1[m]>key:
right=m-1
else:
left=m+1
print(list1[left])
程序执行后,下列说法正确的是( )
A.变量c的值为4 B.程序输出的结果为Lettuce
C.变量left的值为2 D.变量right的值为3
19.在Python循环中,可以使用break语句终止循环,程序将跳出循环,执行循环后的语句,下面代码运行结果是( )
cnt =0
for i in range(1,6):
if i==4: break
cnt=cnt+1
print(cnt)
A.2 B.4 C.3 D.5
20.小明去网吧上网,普通包间3元一小时,高级包间4元一小时,豪华包间6元一小时,他决定用函数计算上网费用,如下:
1 def cost(hour, style):
2 if style=="普通":
3 return hour*3
4 elif style=="高级":
5 return hour*4
6 elif style=="豪华":
7 return hour*6
8 else:
9 return
10
11
函数中的两个参数分别对应的是_________、_________,豪华包间上网2小时的费用是( )
A.上网时长 包间类型 12 B.包间类型 上网时长 12
C.上网时长 包间类型 8 D.包间类型 上网时长 8
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.B
【详解】本题主要考查Python多分支结构。Python多分支结构格式是if…elif…else,故划线处填elif,故本题选B选项。
2.ACD
【详解】本题主要考查Python程序的调试。分析程序可知,将“elif”改为“if”,程序功能不变;划线处代码为“(scores-maxs-mins)/(n-2)”;倒数第2行代码取消缩进,该语句只执行一次,因此算法更加优化;此程序段只适用于满分不超过10的情况,故本题选ACD选项。
3.A
【详解】本题主要考查Python分支结构。统计其中奇数个数的功能,故if用来判断i是否为奇数,故填i%2==1,故本题选A选项。
4.A
【详解】本题主要考查Python程序的执行与调试。①在屏幕上显示编号及物品名称,物品保存在things列表中,故此处填things[i]。②sample(list, k)返回一个长度为k新列表,新列表存放list所产生k个随机唯一的元素。故此处填things。③此处判断i与编号ans对应的物品things[ans]是否相等,若是则说明回答正确,变量n递增1,故此处填things[ans],故本题选A选项。
5.C
【详解】本题考查Python表达式的运算。若a和b相等,则a%b=0,选项A错误。若a=1,b=2,则a%b=1,排除BD选项。若a=1,b=-2,则a%b=-1,因此a不是负数,b肯定也不是负数。故选C。
6.B
【详解】本题主要考查Python程序的执行与调试。a[0] =random.randint(95,100),a[0]是随机生成95~100之间的整数, 当i等于偶数时,执行 a[i] = a[i]+ a[i] % 10,即除a[0]外索引为偶数的值均为偶数,选项B中a[2]=97不符合,故本题选B选项。
7.C
【详解】本题考查字符串求长度相关知识点
转义符号\与其要转义的字符一起构成一个新字符,故len(s)的值为5(a,
,b,\t,c)。故本题选C选项
8.C
【详解】本题主要考查Python程序的综合应用。用f[y]标记四位整数上y,该数不论出现几次,都赋值为1,即第一空填 f[y] = 1,如果sum(f)==4,说明没有重复的位,反之有重复的位,即第二空填sum(f) == 4,故本题选C选项。
9.C
【详解】本题主要考查Python程序的执行。n=16,s=0,i=1
第一次循环,满足i*i<=n,满足n%i==0,s=s+2=2,i=i+1=2;
第二次循环,满足i*i<=n,满足n%i==0,s=s+2=4,i=i+1=3;
第三次循环,满足i*i<=n,不满足if判断条件,i=i+1=4;
第四次循环,满足i*i<=n,满足i==n//i,s=s+1=5,i=i+1=5,循环结束,输出的结果是5,故本题选C选项。
10.A
【详解】本题主要考查Python函数。eval()函数用来执行一个字符串表达式,并返回表达式的值,2+4/5=2+0.8=2.8,故语句eval('2+4/5')执行后的输出结果是2.8,故本题选A选项。
11.A
【详解】本题主要考查Python程序的执行。分析程序可知,该程序实现将s中相邻不相等的字母依次拼接到变量st中,相等字母跳过,s="aabbccabc",故运行该段代码后,输出结果为abc,故本题选A选项。
12.D
【详解】本题考查的是Python多分支结构。x=-2.5,不满足x > 0,也不满足x = 0,故最后输出为-1。选项D正确。
13.C
【详解】本题主要考查Python程序的执行与调试。len(lst) -1=6,外层循环理论一共要执行6次,即加框处理论上执行6次,但当i=4时,lst已有序,循环结束,因此加框处语句被执行的次数是5。每次循环lst的变化:[1, 7, 3, 4, 3, 3, 6]→[1, 3, 7, 3, 4, 3, 6]→[1, 3, 3, 7, 3, 4, 6]→[1, 3, 3, 3, 7, 4, 6]→[1, 3, 3, 3, 4, 7, 6],故本题选C选项。
14.D
【详解】本题考查的是Python选择语句。由n=220可知输入的是男性,male表示男性是字符串类型必须加上双引号,==表示相等,=表示赋值,故横线上应填入的内容是:if gender==”male”:。选项D正确。
15.A
【详解】本题主要考查Python程序的执行。
(1)由下面代码pre=p,p=a[p][1],即p指向了下一个节点,说明p节点的值大于q节点的值,故此处判断条件是a[p][0]>= b[q][0]。(2)如果不满足if判断条件,说明q节点的值比较大,将b[q][0]加入到列表a中,指针域是p,故填[b[q][0],p]。(3)如果p不等于head_a,此时 pre=head_a=len(a)-1,则更新pre节点的指针域为len(a)-1,q指向下一个节点,继续比较,故本题选A选项。
16.A
【详解】本题考查变量名的命名规则。Python中变量的命名遵循的规则:以字母或下划线开头,后面可以是字母、数字或下划线;区分大小写;不能使用保留字。故选A。
17.C
【详解】本题主要考查Python程序的执行。score=20,不满足if判断条件,执行score=score+10=30,因此打印出的score的值为30,故本题选C选项。
18.B
【详解】本题主要考查二分查找算法及Python程序实现。已知left=0,right=7,key="Garlleftc",第一次查找m=(left+right) //2=3,c=c+1=1,a (3) ="Lettuce",判断list1[m] > key成立,执行right=m-1=2;第二次查找m= (left+right) //2=1, c=c+1=2, a (2)= "Garlleftc",判断list1[m] > key不成立,执行left=m+1=2;第三次查找m= (left+right) //2=2,c=c+1=3,a (2) ="Garlleftc",判断list1[m] > key不成立,执行left=m+1=3;此时left=3,right=2不在满足循环条件,输出list1[3]= "Lettuce",c的值为3,left=3,right=2,故本题选B选项。
19.C
【详解】本题主要考查Python程序的执行。分析程序可知,变量i的范围是从1~5,当i=4时,循环结束,此时cnt的值为3,故本题选C选项。
20.A
【详解】本题主要考查Python分支结构。分析程序可知,hour和style分别表示上网时长和包间类型,豪华包间6元一小时,则豪华包间上网2小时的费用是12元,故本题选A选项。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$