内容正文:
2.3 周而复始的循环
一、选择题
1.在Python中,运行以下程序后,变量i的值是( )
i=0
while i<=40:
print(i)
i=i+8
A.40 B.48 C.32 D.56
2.某算法的部分流程图如图所示,执行这部分流程,若输入n的值为25,则输出a、b的值分别是( )
A.15,14 B.10,14 C.10,7 D.15,7
3.有如下Python程序段:
a=[4,3,1,2,3]
m=0
s=0
for i in range(1,len(a)):
if a[i] < a[m]:
m=i
s=s+m
print(s)
执行该程序段后,输出的结果是( )
A.10 B.9 C.8 D.7
4.有如下程序段
a=[1,3,5,7,9]
x=6
for i in range(3,1,-1):
a[i+1]=a[i]
a[3]=x
#则程序执行后,a 的值为( ):
A.[1,3,5,7,7] B.[1,3,5,5,7] C.[1,3,5,6,7] D.[1,3,5,6,9]
5.有如下Python程序段:
s=["a","b","c","d"]
i=0
for xx in s:
t=ord(xx)-ord("a")
i+=t
print("i=",i)
执行该程序段后,输出 i 的值是( )
A.4 B.5 C.6 D.10
6.有如下Python程序段,可以实现从班级学生中随机抽取五名学生参与班会活动。
名称
含义
random.randint(a,b)
随机生成一个[a,b]范围内的整数
random.random()
随机生成一个[0,1)范围内的实数
random.choice(seq)
从序列seq的元素中随机挑选一个元素
import random#random模块中的常用函数如上表所示
#导入学生名单到列表a中,a=["张*","李*",...,丁*"]
name_list=[] #列表name list存放随机生成的学生名单
for i in range(5):
t=①
②
a.pop(t) #从列表a中删除已被抽取的学生,避免重复抽取
上述程序段中划线处依次可填入的语句是( )
A.①random.randint(0,len(a)-1) ②name_list+=a[t] B.①int(random.random()*len(a)) ②name_list+=a[t]
C.①random.randint(0,len(a)) ②name_list.append(a[t]) D.①random.randint(0,len(a)-1) ②name_list.append(a[t])
7.有下列Python程序段:
s1="pytorch'';s2="python";s=""
i=0;j=0
while i<len(s1)and j<len(s2):
if s1[i]>s2[j]:
s=s+s1[i]
else:
j+=1
i+=1
执行以上程序段后,s中的值是( )
A."or" B."ch" C."on" D."to"
8.下列Python程序段执行后,语句s=s+i执行的次数是( )
s=0
i=1
while i<5:
s=s+i
i=i+1
print(s)
A.2次 B.3次 C.4次 D.5次
9.为使下面左右框内的Python程序段实现相同的功能,则右框内划线处填写的代码应该是 ( )
s=t=0
for t in range(0,7,2):
s+=t
s=t=0
while t<=6:
s+=t
________
A.t+=2 B.s+=2 C.t+=s D.t=s+2
10.某Python程序如下:
from random import random
a=[0]*7
flag=[False]*10
i=1
while i<=6:
a[i]=int(random()*5)*2+1
if flag[a[i]]==False or a[i]>a[i-1]:
flag[a[i]]=True
i=i+1
该程序段运行后,列表 a的值可能为( )
A.[0, 7, 5, 9, 7, 1, 7] B.[0, 1, 3, 5, 7, 9, 1]
C.[0, 9, 2, 3, 5, 7, 9] D.[0, 9, 5, 9, 7, 9, 1]
11.有如下Python程序
s1="0312"; s2="ABCDEFGH"
m=0; c=""
for i in range(len(s2)):
k=int(s1[i%4])
m=4*(i//4)
c+=s2[k+m]
执行该程序段后,变量c的值是( )
A."ADBCADBC" B."ABCDEFGH" C."AHBGCFDE" D."ADBCEHFG"
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.有如下Python程序段
from random import randint
x=randint(2,4)*2
a=[9,2,5,1,3,4,8,7]
n=len(a)
for i in range(0,n-1):
k=i
for j in range(i+1,x):
if a[k]>a[j]:
k=j
if i!=k:
a[k],a[i]=a[i],a[k]
print(a)
执行后,输出结果不可能是( )
A.[1,2,3,4,5,7,8,9] B.[1,2,3,4,5,9,8,7]
C.[1,2,5,9,3,4,8,7] D.[1,2,3,4,5,9,7,8]
14.循环次数未知的循环结构可以使用( )
A.if语句 B.def语句 C.while语句 D.for语句
15.在Python中,下列程序段执行后,输出的结果是( )
s=1
n=4
for i in range(1,n):
s=s*i
print(s)
A.2 B.4 C.6 D.8
16.有如下python 程序段:
a = [] #创建一个空列表a
for i in range(11,31,2):
flag = True
for j in range(2,i):
if i % j == 0:
flag = False
break
if flag == True:
a.append(i) #把变量i的值添加到列表a
运行该程序后,列表a中的元素个数为( )
A.5 B.6 C.7 D.10
二、填空题
17.有如下 Python 程序段:
li=[["a",10],["b",20],["c",30]]
dic={}
for i in range(len(li)):
dic[li[i][0]]=li[i][1]
print(dic)
运行该段程序后,输出内容为
18.下面代码段的运行结果为 。
for i in range(2,20,2):
print i
19.程序有3种基本结构, 是最简单的程序结构。
20.实现循环控制的三要素是 、 和 。
21.写出运行结果。
s=0
while s<=30:
s=s+10
print(s)
结果:
三、判断题
22.下列Python程序段运行结束后,赋值语句sum=sum+i共被执行了9次。( )
23.循环语句可以嵌套使用。( )
24.如果循环以“while 1:”开头,在不加干预的情况下,程序会一直运行下去。( )
25.for循环与while循环任何时候都不可以相互替换。( )
四、操作题
26.小申所住的小区里新安装了一台具有“用户识别”“自动称重”“满溢提醒”等功能的智能垃圾回收站,如图1所示。居民投递的可回收物送到分拣工厂后经机器人精细分类,最终进入相应的再生产工厂变废为宝。
图1
(1)智能垃圾回收系统具有“满溢提醒”功能。一旦回收物满溢,系统会自动向管理员手机发送短信提醒信息,这主要体现的信息特征是 (选填:价值是相对的/具有时效性)。
(2)智能垃圾回收系统的“满溢提醒”功能是借助超声波传感器来获取相关数据。这种数据获取的方式属于( )。
A.智能识别 B.人工输入 C.自动控制 D.自动采集
(3)在设计垃圾分拣机器人算法模型的过程中,通过对已标记样本的学习,能够快速地对可回收物进行识别。这属于机器学习中的 (选填:监督学习/非监督学习)。
(4)在机器学习的过程中,有1000张各种各样的可回收物图片。某轮测试将其中80%作为训练集,20%作为测试集。测试数据中共有180张图片被正确分类,则该轮机器学习的识别正确率为 。
(5)垃圾分拣机器人判断某回收物是否为易拉罐的简要过程如图2所示,虚线框中算法的基本控制结构是 (选填:顺序结构/分支结构/循环结构)。
图2
(6)关于人工智能对社会发展的影响,以下表述正确的是( )。
A.人工智能将减少人类追求知识的热情,阻碍社会发展
B.人工智能的应用将人类从部分脑力劳动中解放出来
C.人工智能的发展应尊重隐私保护,防止数据滥用
D.人工智能正在改变着人类的学习和生活方式
27.小明在学习了数据加密与安全相关知识后,想给班里每个同学的姓名进行简单的加密,将学生姓名首字母(均为大写字母)转换成新的字符串。算法功能如下:
利用自定义加密函数encrypt()将输入的明文字符code用8位密钥key进行加密,生成密文new_code,加密前先将每个字符都转为8位二进制。例如,姓名字符串“CF”(用8位二进制码表示为01000011 01000110)可以用密钥10001001加密:
01000011 01000110
⊕10001001 10001001
=11001010 11001111
部分程序代码如下:
def encrypt(code,key):
①
s=""
while m>0:
r=m%2
s=str(r)+s
m=m//2
encode=""
m=0
for i in range(8):
if s[i]=="1" and key[i]=="1":
encode="0"
elif s[i]=="0" and key[i]=="0":
encode="0"
else:
encode="1"
m= ②
new_code=chr(m)
return new_code
def main():
key=input("请输入8位密钥:")
code=input("请输入姓名首字母:"))
new_code=""
for i in code:
new_code=new_code+ ③
print(new_code)
if__name__=="__main__":
main()
(1)程序中所用的加密算法是 (单选,填字母:A.换位加密/B.异或加密/C.置换加密)。
(2)加框处代码的功能是 。
(3)请在画线处填入合适的代码① ② ③
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.B
【详解】本题考查Python编程基础。分析程序段,其功能是在i<=40的条件下循环输出i的值,i的初始值是0,步长为8,即:0、8、16...,当i=48时,结束循环。故本题答案是B选项。
2.B
【详解】本题考查流程图分析能力。根据流程图显示,变量a,b,n经过以下过程:
a=0,b=0,n=25
a=5,b=0,n=20
a=5,b=7,n=13
a=10,b=7,n=8
a=10,b=14,n=1
故选项B正确。
3.D
【详解】本题考查的是Python循环及选择语句。程序执行过程如下表:
i
a[i]
a[m]
m
s
初始
0
0
1
3
4
1
1
2
1
3
2
3
3
2
1
2
5
4
3
1
2
7
结束
故执行该程序段后,输出的结果是7,选D。
4.C
【详解】本题考查的是Python循环语句。a=[1,3,5,7,9],x=6。range(3,1,-1)生成3、2系列数,故循环执行两次,a[4]=a[3]=7,a[3]=a[2]=5;跳出循环后,a[3]=x=6。故程序执行后,a的值为[1,3,5,6,7],故选C。
5.C
【详解】本题考查的是Python循环语句。for循环中,执行 t=ord(xx)-ord('a'),t的值依次是0、1、2、3,因此i=i+t=0+0+1+2+3=6,故本题选C选项。
6.D
【详解】本题考查的是列表综合应用。列表索引从0开始,故随机数应为0~len(a)-1的整数,列表元素添加用append。故本题应选D。
7.A
【详解】本题考查的是Python循环语句。阅读程序可知,将s1中字符与s2中字符逐个比较,如果s1中字符
比s2中字符大,将s1中字符拼接在字符串s后面,否则下个循环s1中下一字符与s2中下一字符比较,直到s1或s2所有字符比较完。
"p"="p";
"y"="y";
"t"="t";
"o">"h",将"o"字符拼接在字符串s后面,s="o"
"r">"h",将"r"字符拼接在字符串s后面,s="or"
"c"<"h";
"h"<"o";
循环结束,故本题应选A。
8.C
【详解】本题考查Python程序调试。变量i初值是1,循环条件是i<5,因此i取1、2、3、4,即循环4次。故选C。
9.A
【详解】本题是循环结构程序 for语句和while语句之间的转换实现。for语句通过“range(1,7,2)”语句,按照步长来改变循环变量的值直至结束循环;而while语句则需要在其循环体(语句块)内编写改变循环变量的语句,直至 while 条件表达式的值为False,从而结束循环。由题中 for语句程序段可知循环变量t的步长为2,在循环体(语句块)其他语句保持不变的情况下,为了确保两程序段能实现计算“1+3+5”的相同功能,则右框内划线处填写的代码应该是:t+=2。故本题应选A。
10.D
【详解】本题考查的是Python循环语句。由int(random()*5)*2+1可知生成的是1~9的奇数,故选项C不可能。由flag[a[i]]==False or a[i]>a[i-1]可知如果生成了重复的数字,则 a[i]>a[i-1]。选项A:a[4]=7数字重复了,但a[4]=7不大于a[3]=9,不可能;选项B:a[6]=1数字重复了,但a[6]=1不大于a[5]=9,不可能。故本题应选D。
11.D
【详解】本题考查的是Python循环语句。由程序中c += s2[k+m]可知,从s2 中取值由k+m确定,k的取值依次为“03120312”,而m的取值依次为“00004444”,可知k+m的取值依次为“03124756”,所以答案为“ADBCEHFG”,故本题应选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
【详解】本题考查Python程序。这是一个简单的选择排序算法实现。选择排序的目的是将数组按升序排列。在这个算法中,你选取列表中的最小元素并将其与第一个元素交换,然后选取第二小的元素并将其与第二个元素交换,以此类推,直到整个列表排好序。现在,让我们逐一分析选项:[1, 2, 3, 4, 5, 7, 8, 9]:这是选择排序的升序排列结果,是可能的输出。[1, 2, 3, 4, 5, 9, 8, 7]:这也是选择排序的一种可能结果,其中有一个逆序对在第6和第7位置(8和7之间)。虽然这不是最常见的排序结果,但仍然是可能的输出。[1, 2, 5, 9, 3, 4, 8, 7]:这是选择排序的一种可能结果,其中在第2和第3位置(2和5之间)有一个逆序对。虽然不太常见,但仍然是可能的输出。[1, 2, 3, 4, 5, 9, 7, 8]:这个选项中,数字7和8的顺序被颠倒了,这不是选择排序的结果。在选择排序中,从左到右,每次都会选择列表中的最小元素,并将其放在正确的位置。因此,选项D不是选择排序的可能输出,因为它没有按照升序排列。故答案为D选项。
14.C
【详解】本题考查循环结构。在编程中,循环次数未知的情况下通常会使用while语句。while语句的循环条件为真时,会一直执行循环体中的代码,直到循环条件变为假才停止循环。故答案为C选项。
15.C
【详解】本题考查的是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)。故程序输出的结果是:s=1*1*2*3=6。选项C正确。
16.B
【详解】本题考查Python程序。这段程序的目标是找出在范围从11到30的奇数中的素数,并将它们添加到列表a中。让我们逐步分析它:循环从11到30,步长为2,这意味着只有奇数会被考虑。对于每个奇数i,它的素数性质通过内部循环进行检查。内部循环从2到i-1迭代,检查i是否能被j整除。如果在内部循环中找到了i的因子,flag将被设置为False,表示i不是素数,并且内部循环将终止。如果在内部循环中没有找到i的因子,flag保持True,表示i是素数,然后i将被添加到列表a中。最终,程序将找到的素数添加到列表a中。现在我们来计算列表a中的元素个数:素数是:11, 13, 17, 19, 23, 29。故答案为B选项。
17. {'a': 10, 'b': 20, 'c': 30}
【详解】本题考查的是字典及循环语句。由dic[li[i][0]]=li[i][1]可知,程序的功能是将嵌套列表中,列表的第一个元素作为字典的键,第二个元素作为字典的值,li=[["a",10],["b",20],["c",30]],运行该段程序后,输出内容为: {'a': 10, 'b': 20, 'c': 30}。
18.2,4,6,8,10,12,14,16,18
【详解】本题考查Python程序设计相关内容。range函数用于生成一个整数序列,其语法是range(start, stop[, step])。其中start是序列的起始值,stop是序列的结束值(不包括),step是步长,默认为1,即序列中相邻两个数的差。分析程序段,i初始值为2,步长为2,20是序列的结束值(不包括),则输出结果为:2,4,6,8,10,12,14,16,18。
19.顺序结构
【详解】本题考查的知识点是程序基本结构。程序有三种基本结构:顺序结构、选择结构和循环结构。其中,顺序结构是最简单的程序结构。在顺序结构中,程序的各个操作按照它们在源代码中的排列顺序自上而下依次执行。这种结构相对直接明了,只需要按照逻辑顺序编写代码即可。故答案为:顺序结构。
20. 初值 终值 循环体
【详解】本题考查循环结构的描述。实现循环控制的三要素是:初值、终值和循环体。
21.40
【详解】本题考查循环结构。这段代码使用了一个while循环。循环开始时,s的值为0。然后,循环检查s是否小于或等于30。如果条件成立,循环体内的代码将被执行。在循环体内,s的值增加10,然后再次检查循环条件。这个过程会一直重复,直到s的值大于30。循环结束后,最后一次s增加10的操作也会执行,将s的值增加到40。所以,打印出的结果是40。故答案为:40。
22.正确
【详解】本题考查的是Python循环与选择语句。range(1,20)生成1~19的整数,阅读程序可知,只有i为1~19的偶数,才执行赋值语句sum=sum+i。故一共被执行了9次。题干中说法正确。
【点睛】
23.正确
【详解】本题考查的知识点是循环结构应用。循环语句可以嵌套使用。在一个循环的内部再使用另一个循环,这就是循环的嵌套。在大多数编程语言中,如Python,Java,C++等,都支持循环的嵌套。故答案为正确。
24.正确
【详解】本题考查Python循环结构的描述。如果循环以“while 1:”开头,while的条件是1,非零即为真,在不加干预的情况下,程序会一直运行下去,陷入死循环。表述正确。
25.错误
【详解】本题考查循环。for 循环和 while 循环是两种不同类型的循环结构,它们用于不同的情况,但它们通常可以相互替换。for 循环通常用于已知循环次数的情况,例如遍历一个列表或迭代器中的元素。while 循环通常用于未知循环次数的情况,即当某个条件为真时继续执行循环。在某些情况下,可以使用 for 循环来模拟 while 循环,反之亦然,但这通常需要额外的控制语句。故说法错误。
26. 具有时效性 D 监督学习 90% 分支结构 BCD
【详解】本题考查信息技术综合。(1)“满溢提醒”功能自动发送短信提醒,需要管理员处理,强调时效性。故填写具有时效性。(2)传感器可以自动采集数据。故选择D。(3)学习已经标记的样本,属于监督学习。故填写监督学习。(4)200张图片,正确分类180张,故正确率90%。(5)是易拉罐吗,是则回收,不是则继续执行后续语句。故分支结构。(6)人工智能的发展恰恰能够为人类提供更多获取知识的工具和渠道,反而能够激发人类对知识的热情和追求。其它选项正确,故选择BCD。
27. B 字符对应的二进制位数不够8位,则高位补0 m=ord(code) m*2+int(encode) encrypt(i,key)
【详解】本题考查的是Python综合应用。
(1)依据题干加密的例子可知程序中所用的加密算法是异或加密。
(2)加密前先将每个字符都转为8位二进制,由if len(s)<8可知加框处代码的功能是:字符对应的二进制位数不够8位,则高位补0。
(3)①处,加密前先将每个字符都转为8位二进制,先加密字符转换为ASCII十进制数编码,然后转换为二进制数。故此处应为:m=ord(code);②处,转换成新的字符串,故此处是将二进制数转换为十进制数,故此处应为:m*2+int(encode);③处,对姓名首字母逐个加密,加密函数是encrypt,密钥key,加密的字符通过i来取,故此处应为:encrypt(i,key)。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$