内容正文:
2.3 周而复始的循环
学校:___________姓名:___________班级:___________考号:___________
一、选择题
1.输入数字1234,以下程序的输出结果是( )
x=int(input())
s=0
while x!=0:
t=x%10
s+=t
x//=10
print(s)
A.1234 B.123 C.10 D.12
2.阅读下列程序,选出运行结果( )
def fib(m):
n1=1
n2=1
for i in range(3,m+1):
t=n1+n2
n1=n2
n2=t
return t
print(fib(5))
A.5 B.8 C.3 D.13
3.有如下Python 程序段:
lis=['a','b','c','d']
s=0
for i in lis:
c=ord(i)-ord('a')
s+=c
print(s)
程序运行后,输出s的值为( )
A.4 B.5 C.6 D.10
4.有如下 Python 程序段
import random
s='abcdefghijklmnopq'
for i in range(4):
k=random.randint(0,4)+random.randint(0,1)*10
print(s[k],end='')
执行该程序后,输出的结果不可能是( )
A.ddaa B.eaeo C.dfam D.nemc
5.下列Python 程序用于计算0到100之间的偶数和,程序第2行下划线处应填入( )
1 s=0
2 for i in range(0, , ):
3 s =s+i
4 print(s)
A.100 1 B.100 2 C.101 1 D.101 2
6.在micro:bit 主板上接上温湿度传感器,利用BXY编写代码,查看串口监视器,部分界面如图所示。其中部分代码如下:
from microbit import sleep
import dht11
while True:
temp,hum=dht11.read(1)
sleep(1000)
其中加框处代码为( )
A. B.
C. D.
7.“猜数游戏”中,计算机随机生成一个0~10之间的整数,用户输入一个整数进行猜测,计算机根据用户输入的数据进行比对,直到用户猜中为止。为了实现“猜数游戏”,补充完善下列 Python程序第5行下划线处的代码( )
1 #猜数游戏
2 import random
3 number=random.randint(0,10)
4 guess=int(input(“请输入猜测的数:”))
5 while _____________:
6 guess=int(input(“猜错了,继续猜一猜:”))
7 print(“恭喜你,猜对了!”)
A.guess!=number B.guess=!number C.guess==number D.guess=number
8.有如下VB程序段:
For i=1 to 3
For j=1 to 5-i
If a(j)>a(j+1) Then
t=a(j) : a(j)=a(j+1) : a(j+1)=t
End If
Next j
Text1.Text = Str(a(i))+Text1.Text
Next i
数组元素a(1)到a(5)的值依次为“2,9,7,8,5”。若该程序段执行后,文本框Text1显示的内容是( )
A.2 5 7 B.9 8 7 C.2 7 7 D.7 7 2
9.在Python中,执行list( i for i in range( 10,20,3) if i % 2==1 )语句后输出的结果是( )
A.[10,13,16,19] B.[13,16,19] C.[12,18] D.[13,19]
10.经过中国国家登山队的测量,2020年12月8日,中尼两国共同宣布了珠穆朗玛峰的最新高度为海拔8848.86米。现有一张白纸的厚度大约是0.08毫米,对折一次,厚度变0.16毫米,再对折一次,厚度变为0.32毫米,……,每对折一次,其厚度均变为对折前的两倍,假设这张纸足够大,可以对折任意次,那么这张纸至少对折多少次后,其厚度将超过珠穆朗玛峰的高度?以下是求解以上问题的程序片段,请你补全代码:
请选择适当的代码填入程序①处。( )
A.while B.for C.output D.input
11.有如下Python程序段:
s1="192637"
s2="playground"
s3=""
for i in s1:
s3 = s2[int(i)] + s3
print(s3)
执行该程序段后,输出的结果是( )
A.ldaoyu B.pnlrao C.oarlnp D.uyoadl
12.有如下Python程序段:
import random
i = 1;n = 5
res = []
while i <=n:
num = random.randint(1, 10)
if num not in res:
res += [num]
i += 1
执行该程序段后,res的值可能的是()
A.[0, 4, 8, 1, 9] B.[3, 2, 4, 5, 5] C.[6, 5, 7, 8, 4] D.[6, 5, 1, 3, 8,7]
13.有如下 VB 程序段:
Private Sub Command1_Click()
Dim a(1 To 6) As Integer, i As Integer
For i = 1 To 6
a(i) = Int(Rnd * 5) * 2 + 1
Next i
For i = 2 To 6 Step 2
a(i) = cha(a(i -1), a(i))
Next i
End Sub
Function cha(x As Integer, y As Integer) As Integer
Dim t As Integer
If x < y Then
t=x: x = y: y = t
cha = y
Else
cha = x -1
End If
End Function
执行该程序段后,在下列选项中,a(1)~a(6)各元素值可能的是( )
A.8,9,3,2,5,1 B.7,6,5,5,3,1
C.9,3,5,4,4,3 D.7,3,1,0,5,4
14.某算法的部分流程图如图所示,若输入n的值为3,执行该部分流程,则输出的结果是( )
A.0011 B.1100 C.011 D.11
15.下方流程图能描述循环结构的是( )
A.1 2 4 B.2 4 C.1 3 D.2 3
16.有如下Python程序段:
import random
n=random. randint (5,15)
i=0:a=[0]*10
while i<n:
j=0
a[j]=a[j]+1
while a[j]==3:
a[j]=0
j=j+1
a[j]=a[j]+1
i=i+1
执行该程序段后,列表a中元素之和为3,则n的值不可能是( )
A.5 B.7 C.10 D.13
17.以下Python程序段实现加密功能:
s="age@126."
n=1en(s)
i=0
ans=0
while i<n:
if ″9″>=s[i]>=″0″:
ans+=int(s[i])*i
elif ″z″>=s[i]>=″a″:
ans+=ord(s[i])-ord(″a″)
else:
ans+=1
i+=1
print(ans)
程序运行后,输出的结果是( )
A.61 B.62 C.70 D.71
18.在Python中,以下代码执行后输出的结果是( )
x=1
for i in range(5):
x=x*i
print(x)
A.0 B.15 C.24 D.120
19.利用Python编写自定义函数完成阶乘的计算,代码如下所示,程序运行结果是( )
(1)def factoria1(n):#求n!
(2) s=1
(3) for i in range(2,n+1)::
(4) s=s*i
(5) return s
(6)print(factorial(4))
A.1 B.120 C.24 D.6
20.某 Python 程序如下:
def encode(msg,key) :
result=""
for i in range(0,len(msg)) :
c=msg[i]
if "a"<=c<="z":
result=chr((ord(c)+key-ord("a"))%26+ord("a"))+result
elif "0"<=c<="9" :
result=result+chr((ord(c)-key-ord("0"))%10+ord("0"))
return result
msg=input("请输入明文:")
key=int(input("请输入密钥:"))
re=encode(msg,key)
print(re)
程序运行后,输入 msg 的值为“1a2b3c” ,key=2,输出的结果是( )
A.edc901 B.edc345 C.9c0d1e D.3c4d5e
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.C
【详解】本题主要考查Python程序的执行。分析程序可知,该程序实现将输入的整数x的各个位进行求和,x=1234,则s=1+2+3+4=10,故本题选C选项。
2.A
【详解】本题主要考查Python程序的执行。分析程序可知,函数fib(m)用于求斐波那契数列的第m项,斐波那契数列是1、1、2、3、5、8……,因此fib(5)=5,故本题选A选项。
3.C
【详解】本题主要考查Python程序的执行。for循环中,执行 c=ord(i)-ord('a'),c的值依次是0、1、2、3,因此s=s+c=0+0+1+2+3=6,故本题选C选项。
4.C
【详解】本题主要考查Python程序的执行与调试。random.randint(a,b)用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b。k=random.randint(0,4)+random.randint(0,1)*10,k是随机生成0、1、2、3、4、10、11、12、13、14之间的任意数,对应的s[k]的值分别是a、b、c、d、e、k、l、m、n、o,结合选项可知,执行该程序后,输出的结果不可能是dfam,故本题选C选项。
5.D
【详解】本题主要考查Python循环结构的应用。range(start, stop, [step]),start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5;step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)。该程序用于计算0到100之间的偶数和,因此下划线处填101、2,故本题选D选项。
6.B
【详解】本题主要考查Python综合应用。由图可知,先显示温度再显示湿度,排除选项C;温度的格式:数字后带符号“C”,排除选项D;湿度显示完后需要换行,排除选项A,故本题选B选项。
7.A
【详解】本题主要考查Python程序调试。分析程序,由while循环体可知,当guess与number不相等时进入循环体,故填guess!=number,故本题选A选项。
8.D
【详解】本题考查冒泡排序。根据外循环可知,循环执行3趟,根据内循环可知,排序方向为从上往下,结合If a(j)>a(j+1) Then可知,将数值更大的往下换,形成升序排序。i=1时,a(1)=2,i=2时,a(2)=7,i=3时,a(3)=7。故最终text1中为772。本题选D。
9.D
【详解】本题主要考查Python循环结构。range(start, stop, [step]),start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5;step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)。 i for i in range( 10,20,3) if i % 2==1 表示将10、13、16、19中的奇数形成列表,故输出的结果是[13,19],故本题选D选项。
10.A
【详解】本题考查的是Python的while循环。while语句格式:
当表达式的值为真时,执行循环体语句;当表达式值为假时,退出循环,执行循环体外的下一条语句(即while后面没有缩进的第一条语句)。当高度h小于珠穆朗玛峰的高度height,则继续对折,故本题应选A。
11.D
【详解】本题主要考查Python程序的执行。分析程序可知,程序实现:依次取s1中的字符,将其转换为int型,同时取对应s2的值,如第一次循环,s2[int("1")]="l",则s3 = s2[int(i)] + s3="l",for循环执行完,依次从s2取出的值是"d"、"a"、"o"、"y"、"u",故执行该程序段后,输出的结果是uyoadl,故本题选D选项。
12.C
【详解】本题考查的是Python随机函数及循环语句。 random.randint(1, 10)生成1~10的整数。由i=1;n=5、 while i <=n,可知生成的res列表元素是5个,故选项D错误,由代码可知列表中元素值不可能有0、及重复的数据,故选项AB错误。本题应选C。
13.D
【详解】本题考查VB程序段。根据第一个循环内a(i)=Int(Rnd*5)*2+1,可知,a数组是[1,9]中的奇数。又根据第二个循环可知i=2,4,6,又a(i)=cha(a(i-1),a(i)),两种情况,若a(i-1)<a(i),则交换,则a(i)<a(i-1)。若a(i-1)>=a(i),则a(i)=a(i-1)-1,会出现a(i-1)>a(i),综合两种情况,必定有a(i-1)>a(i)。A中8,9不会出现,B中5,5不会出现,C中4,3不会出现,只能选D。
14.A
【详解】本题考查算法流程图。首先将i赋值为0,s赋值为空字符串。第一次循环,i<4条件满足,t=n%2=1,s=“1”,n=n//2=1,i=i+1=1;第二次循环,i<4条件满足,t=n%2=1,s=“11”,n=n//2=0,i=i+1=2;第三次循环,t=n%2=0,s=“011”,n=n//2=0,i=i+1=3;第四次循环,i<4条件满足,t=n%2=0,s=“0011”,n=n//2=0,i=i+1=4;第五次循环,i<4条件不满足,输出s,即输出结果为0011。故答案为A选项。
15.B
【详解】本题考查流程图。图1和图3为选择结构流程图;图2和图4为循环结构;故选择B。
16.C
【详解】本题主要考查Python程序的执行与调试。n=random. randint (5,15),变量n随机生成5~15,当a[j]=3,此时赋值a[j]=0,j=j+1,a[j]=a[j]+1,外层循环每次执行时均赋值j=0。因此当n=5时,a=[2, 1, 0, 0, 0, 0, 0, 0, 0, 0];当n=7时,a=[1, 2, 0, 0, 0, 0, 0, 0, 0, 0];当n=10时,a=[1, 0, 1, 0, 0, 0, 0, 0, 0, 0];当n=13时,a=[1, 1, 1, 0, 0, 0, 0, 0, 0, 0]。执行该程序段后,列表a中元素之和为3,因此n的值不可能是10,故本题选C选项。
17.B
【详解】本题考查的是Python程序调试与运行。阅读程序可知,程序的功能是:逐个判断字符串s中的字符,如果是数字字符,则该数值乘以该数字的位置,累加到ans中;如果是小写英文字符,则将该英文与英文字母“a”的距离,累加到ans中,如果是其它字符,则ans加1。s="age@126.",故ans=0+6+4+1+1*4+2*5+6*6+1=62。故本题应选B。
18.A
【详解】本题考查的是Python循环语句。range(5)生成0,1,2,3,4序列数, x=x*i将i累乘到x中,即x=1*0*1*2*3*4=0,故选A。
19.C
【详解】本题考查的是Python自定义函数及循环语句。由print(factorial(4))可知,传递给自定义函数的参数是4,故返回值s=1*2*3*4=24。故本题应选C。
20.A
【详解】本题考查的是Python循环语句及自定义函数。由if语句可知,如果是小写字母则后移key位,并放在字符串前端;由elif语句可知,如果是数字,则前移key位,并放在字符串的后端。程序运行后,输入 msg 的值为“1a2b3c” ,key=2;字母后移2位后edc,数字前移2位后901,组合后为:edc901。选项A正确。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$