内容正文:
2.3 周而复始的循环
一、选择题
1.在Python中,以下代码的输出结果是( )
x=0
for i in range(2,8,2):
x=x+i
print(x)
A.20 B.16 C.12 D.10
2.某Python程序如下:
s="24SXqz"
e=""
for ch in s:
if ch>="0" and ch<="9":
c+=str(9-int(ch))
elif ch>="a" and ch<="z":
c+=chr((ord(ch) -ord("a")+3) %26+ord("a") )
else:
c=ch+c
print(c)
程序运行后,输出的结果是( )
A.XS24tc B.75SXtc C.XS75tc D.24SXtc
3.有如下Python程序段
head=4
item=[[5,2],[7,3],[9,5],[2,-1],[1,0],[3,1]]
p=head
str1=''
while p!=-1:
str1+=str(item[p][0])+"->"
p=item[p][1]
print(str1[:-2])
运行上述程序,结果为( )
A.1->5->9->3->7->2 B.1->5->9->3->7->2->
C.1->5->9->3->7 D.1->5->9->3->7->
4.某Python程序如下:
from random import randint
a=[0]*6
flag=True
i=0
while i<=5:
x=randint(1,50) #randint(a,b)用来随机生成[a,b]之间正整数
if flag or x>25:
a[i]=x
flag=not flag
i+=1
print(a)
执行该程序段后,在下列选项中,列表a中元素值不可能的是( )
A.[8,39,30,39,37,45] B.[7,35,12,28,25,23] C.[18,44,46,34,1,40] D.[20,33,16,50,47,39]
5.有如下程序段
mw = input('请输入:')
res=''
i=0; j=0; n=len(mw)
while j<n:
if i%2==0:
mw+=mw[i]
else:
res+=mw[i]
j+=1
i+=1
print(res)
若输入的内容为python,输出的结果为( )
A.pto B.yhn C.ptoynh D.yhntpo
6.有如下 Python程序,实现求字符串中的最长连续上升子串的长度。例如:字符串“hellopython”中的最长连续上升子串是“lopy”,长度为 4。
s=input()
n=len(s);c=1;max=1
for i in range(1,n):
if (1) :
c=c+1
if c>max:
max=c
else:
(2)
print(max)
划线处可选代码为①c=1 ②c=0 ③s[i]<s[i+1] ④s[i]>s[i-1]
划线处正确的语句依次为( )
A.③① B.③② C.④① D.④②
7.有如下Python程序段:
s = 0 ; i = 1
while :
s = s + i
i = i + 2
该程序段运行后,变量s的值等于9,则程序划线处的语句不可能的是( )
A.i < 5 B.i <= 5 C.i < 6 D.i <= 6
8.在Python语言中,程序运行结果如下所示,应在以下横线处填写( )
*
*
*
for i in range(1, ,1):
print("* ")
A.6 B.5 C.4 D.1
9.在 Python语言中,运行以下程序,屏幕打印“*”的个数是( )
for i in range(0,10,2):
print("* ")
A.10 B.5 C.6 D.9
10.在python中,运行下列程序后会看到( )“*”
for i in range(1,5):
print("hello")
print("*")
A.5 B.4 C.2 D.1
11.读以下代码段,对其运行结果说法正确的是 ( )
s=0
for i in range(1,7,2):
s=s+i
print(s)
s=0
for i in range(1,7,2):
s=s+i
print(s)
s=0
for i in [1,3,5]:
s=s+i
print(s)
s=0
for i in [1,3,5]:
s=s+i
print(s)
①
②
③
④
A.①②运行结果均输出9 B.①③运行结果相同,②④运行结果相同
C.②③运行结果均为换行输出1 4 9 D.①④运行结果相同,②③运行结果相同
12.字符串s仅包含小写字母且已升序排列,现对字符串s进行压缩,例如“aabbccdee”压缩为“2a2b2c1d2e”。实现该功能的程序段如下,方框中应填入的正确代码为( )
s="aabbccdee"
ans="";n=len(s)
print(ans)
A.A B.B C.C D.D
13.有如下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"
14.有如下python程序段,运行该程序段后,列表a中的值可能是( )
import random
a =[]
for i in range(6):
t= random.randint(1,11)
a.append(t+t%2)
for i in range(1,6):
j=i;k= a[j]
while a[j-1]<k and j>0:
a[j]= a[j-1]
j=j-1
a[j]= k
A.11,8,7,6,5,5 B.2,4,4,6,8,10 C.12,10,2,2,2,2 D.11,11,7,5,3,1
15.使用链表结构模拟某景区游玩路线,链表a中每一个节点包含三个数据,第1个为景点名称,第2个为预计游玩时间(单位:分钟),第3个为下一个景点指针。景区可以从多个景点的大门进入,但只能从"天梯"离开,输出显示各大门进入路线及预计总时间的代码如下。
a=[["迎客松",21,2],["激流勇进",40,2],["天空栈道",50,5],["一线天",30,4],["飞来峰",60,5],["天梯",20,-1]
head=[0,1,3]
for i in range(len(head)):
(1)
s=a[p][1]
while a[p][2]! =-1:
print(a[p][0],end="-->")
(2)
(3)
print(a[p][0])
print("预计时间:",s,"分钟")
上述程序划线处的可选代码有:
①p=head ②p=head[i] ③s=s+a[p][1] ④p=a[p][2]
则(1),(2),(3)处代码依次为( )
A.①③④ B.①④③ C.②③④ D.②④③
16.有如下Python程序:
a=[12,45,45,63,0,0,63]
cnt=0
for i in range(1,len(a)):
j=i-1
t=a[i]
while j>=0 and t>a[j]:
a[j+1]=a[j]
j=j-1
cnt=cnt+1
a[j+1]=t
print(cnt)
运行该程序后,输出的结果是( )
A.8 B.10 C.11 D.13
17.有如下Python程序段:
tmps=[32,28,26,29]
n=len(tmps);top=-1
ans=[0]*n
stk=[-1]*n
for i in range(n):
t=tmps[i]
while top>-1 and t>tmps[stk[top]]:
d=stk[top]
top-=1
ans[d]=i-d
top+=1
stk[top]=i
print(ans)
执行该程序段后,输出的结果是( )
A.[1,0,0,1] B.[1,1,0,0]
C.[0,2,1,0] D.[0,1,2,0]
二、填空题
18.程序有3种基本结构, 是最简单的程序结构。
19.下列程序的作用是 。
sum=0
for i in range( 2,101,2):
sum +=i
print( sum)
20.写出运行结果。
s=0
while s<=30:
s=s+10
print(s)
结果:
21.以下Python程序运行结束后,循环变量i的值是 。
22.下面程序的运行结果为( )
23.def fun(n, k):
arr = list(range(1, n+1))
index = 0
while arr:
temp = arr. pop(0)
index += 1
if index == k:
#print(temp)
index = 0
continue
arr.append(temp)
if len(arr) == 1:
print(arr[0])
break
fun(41,3)
输出:
三、判断题
24.下列Python程序段运行结束后,赋值语句sum=sum+i共被执行了9次。( )
25.循环语句可以嵌套使用。( )
26.如果循环以“while 1:”开头,在不加干预的情况下,程序会一直运行下去。( )
27.for循环与while循环任何时候都不可以相互替换。( )
四、操作题
28.第19届杭州亚运会已完美落幕,亚运会赛事以“杭州为主,全省共享”的原则分布在杭州、宁波、温州、湖州、绍兴、金华各地。大会共有40个大项,61个分项,最终诞生了481块金牌。小李作为一名体育爱好者想重温大会赛程安排,他从杭州亚运会的官网上采集了相关数据,整理后存储在“杭州第19届亚运会总赛程.x1sx”文件中。如图a所示(0表示有赛事但不产生金牌,其他数字表示当天产生的金牌数)。
图a
为了更清楚地了解相关赛事信息,小李编写了Python程序,请回答以下问题。
(1)足球是小李最关注的大项,为了解足球的赛程安排,划线处应填入的代码为 (单选,填字母)
A.df.大项=="足球" B.df["大项"=="足球"] C.df[df.大项=="足球"] D.df[df["大项"]==足球]
import pandas as pd
df=pd.read_excel("杭州第19届亚运会总赛程.xlsx")
df2=
print(df2)
(2)足球项目的比赛分布在杭州等城市的八个场馆,了解各个场馆举办足球赛事的具体场次,找到连续举办足球赛事最多的场馆,如图b所示。程序代码如下,请在划线处填入合适的代码。
黄龙体育中心体育场[9/19,9/21,9/24,9/27,9/28,10/1,10/4,10/6,10/7]
临平体育中心体育场[9/19,9/21,9/22,9/24,9/25,9/28,9/30,10/3]
上城体育中心体育场[9/20,9/22,9/24,9/25,9/27,9/28,10/1,10/3,10/7]
萧山体育中心体育场[9/19,9/20,9/21,9/22,9/24,9/25,9/27,9/28,10/1,10/4]
金华体育中心体育场[9/19,9/21,9/24,9/27]
浙江师范大学东体育场[9/19,9/21,9/24,9/27]
温州奥体中心体育场[9/21,9/22,9/24,9/25,9/27,9/28,9/30]
温州体育中心体育场[9/22,9/24,9/25,9/27,9/28,9/30]
连续举办足球赛事最多的场馆:萧山体育中心体育场
图b
dic={}
max=0;maxsta=""
1st=df2,竞赛场馆.tolist()#将数据转换为列表
for i in lst:
dic[i]=[]
for i in df2.index:
c=0
sta=df2["竞赛场馆"][i]
for j in df2.columns[2:-3]:
if df2.at[i,j]==0ordf2.at[i,j]==1:
①
c=c+1
if c>max:
max=c;maxsta=sta
else:
②
for i in dic:
print(i,dic[i])
print("连续举办足球赛事最多的场馆:",③ )
(3)足球在亚运会期间总共产生两枚金牌,统计分析其他大项产生的金牌总数,找出产生金牌总数最多的十个大项,并绘制图形如图c所示。程序代码如下,请在划线处填入合适的代码。
图c
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['simhei']#图表中文标签显示为黑体
grp=df.groupby(① ,as_index=False).金牌总数.sum()
grp=grp.sort_values("金牌总数",ascending=False).②
x=grp.大项
y=grp.金牌总数
plt.figure(figsize=(6,4))
plt.title("金牌总数前十的大项")
plt.xlabel("大项")
plt.ylabel("金牌总数")
plt.bar(x,y)
plt.show()
29.小李为某恒温恒湿仓库搭建了环境监测系统,实时监测仓库的温湿度。该系统结构示意图如图所示。该系统通过智能终端将传感器采集到的数据传输到Web服务器,存储在数据库中。当温湿度超出服务器设定的阈值范围,相应蜂鸣器报警,相应执行器(如空调、加湿器等)进行工作。
(1)服务器与数据库之间的数据传输方向是 (单选:A.只能由服务器传输至数据库/B.只能由数据库传输至服务器/C.服务器与数据库之间相互传输)
(2)小李基于Flask Web框架编写服务器端程序,部分代码如下。根据题意,请在程序中划线处填入合适的代码。
#导入Flask框架模块及其他相关模块,代码略
app=Flask(_name_)
@app.route("/input")
def add_data():
#获取温度传感器采集到的数据
id_l=int(request.args.get("id"))
temp=float(request.args.get("w"))
#获取温度阈值上下限,分别保存在变量maxv和minv中,代码略
if :
#启动空调,代码略
else:
#关闭空调,代码略
#服务器其他功能,代码略
if_name_="_main_":
app.run(host="192.168.1.76",port=8080)
(3)若温度传感器的编号id为1,温度值w为25,提交数据到Web服务器的URL为http:// ?id=1&w=25
(4)下列关于该系统中智能终端的功能的描述,不正确的是 (单选,填字母)
A.利用温湿度传感器采集环境数据
B.存储程序和数据库文件等相关数据
C.控制空调、加湿器等执行器的开关状态
(5)系统搭建完成后开始运行。当仓库温度超出阈值范围,相应蜂鸣器1发出警报,空调开始工作;同一时间段内无论湿度如何变化,相应蜂鸣器2始终未发出警报,加湿器也未工作。假设代码正确,阈值设置合理,各设备间连接正常,请从硬件角度简要说明系统中可能造成上述问题的两个原因:① 、② 。
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.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)。range(2,8,2)生成2、4、6,循环结束后x=x+i=0+2+4+6=12,故本题选C选项。
2.C
【详解】本题考查程序分析。程序功能是遍历字符串每个字符,如果是数字字符,执行9减去该字符,转换成字符向后累计拼接到变量c。如果是小写字母字符,则按照26个字母周期向后移动3位,向后累计拼接到变量c。如果是大写字母字符,则向前累计拼接到变量c。故选项C为正确答案。
3.A
【详解】本题考查程序分析。这段代码的功能是根据给定的索引链表item和起始索引head,沿着索引链表依次输出对应的数字,直到遇到索引值为-1为止。最后,我们打印输出了str1[:-2],这里使用[:-2]是为了去掉最后的"->”。故正确答案为选项A。
4.B
【详解】本题考查程序分析能力。根据程序分析可知代码随机生成大于25的正整数,要存放到列表a中。每次if语句判断可知,flag和x>25满足一个可以存放到a中。故可判断出当flag为假时,x>25为真,那么存放到a中的值必然大于25。可知flag值真假交替出现,所以B选项中的23不可能出现在第6项,这一项的值必然大于25,故正确答案为选项B。
5.D
【详解】本题考查的是Python循环与分支语句。阅读程序可知,如果索引为偶数,则将该索引对应的字符加入mw,否则将该索引对应的字符拼接在res后面,直到拼接的字符res与原字符长度一样。若输入的内容为python,将索引为偶数,扩展到原字符中:pythonptopoo,将奇数索引字符取出:yhntpo。故选D。
6.C
【详解】本题考查的是Python循环和选择语句应用。由 range(1,n),可知依次比较i处与i-1处的字符,若大于则c递增,如果c大于max,则更新max的值,如果i处字符不小于i-1处的字符,则c初始化为1,继续新一轮的查找,故(1)、(2)、处语句依次为 s[i]>s[i-1]、c=1,故本题选C选项。
7.A
【详解】本题考查的是循环语句。由循环体可知s=1+3+5+……,要使变量s=9,则s=1+3+5,即i的值不超过6且要取到5,故循环条件为:i<=5或i<6或i <= 6,选项A正确。
8.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)。输出了三个*,range要生成3个数的序列。故本题应选C。
9.B
【详解】本题考查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)。range(0,10,2)生成0,2,4,6,8序列,故打印出5个“*”。选项B正确。
10.D
【详解】本题考查的是Python循环语句。print("*")没有缩进不是for的循环体,故最后会看到1个“*”。选项D正确。
11.D
【详解】本题考查的是Python循环。阅读程序可知,②③运行结果均输出9;①④运行结果均为换行输出1 4 9。故本题应选D。
12.B
【详解】本题考查的是Python的循环语句。选项A中,如果相邻两字符不一样,先把计数器c置为1后,再拼接,会导致前面字符一律认为只有1个;选项C中,由于range函数特点,最后i=n-1,会导致如果最后字符会少统计一次;选项D中,找到一个相同字符就拼接,如果是连续3个及以上字符相同,就会多次拼接,不符合题意。故本题应选B。
13.D
【详解】本题考查的是Python循环语句。由程序中c += s2[k+m]可知,从s2 中取值由k+m确定,k的取值依次为“03120312”,而m的取值依次为“00004444”,可知k+m的取值依次为“03124756”,所以答案为“ADBCEHFG”,故本题应选D。
14.C
【详解】本题主要考查Python程序的执行与调试。由 t= random.randint(1,11)可知t是1~11的整数,由a.append(t+t%2)可知a列表中的数字是2~12的偶数。由第二个for循环嵌套中条件a[j-1]<k and j>0,可知实现的是降序排列。选项AD中含有奇数,不符合;选项B是升序排序,不符合。故本题应选C。
15.D
【详解】本题考查链表结构。链表结构模拟景区游玩路线的程序中,需要注意如下的逻辑:(1)处:应该设置当前节点的指针p为head[i],表示第i个大门的开始路线,即p=head[i]。(2)(3)处注意s的初值为a[p][1],同时最后一个节点取不到,所以应先跳入下一节点再统计当前时间的和,所以答案为②④③,故答案为D选项。
16.B
【详解】本题考查的是排序变形。程序的功能是:循环实现前i+1元素,从左往右冒泡,实现降序排列,cnt记录的是交换次数。a=[12,45,45,63,0,0,63]
当i=1,对a=[12,45,45,63,0,0,63]前面2个元素冒泡,12和45交换1次,完成后a=[45, 12, 45, 63, 0, 0, 63];
当i=2,对a=[45, 12, 45, 63, 0, 0, 63]前面3个元素冒泡,12和45交换1次,完成后a=[45, 45, 12, 63, 0, 0, 63];
当i=3,对a=[45, 45, 12, 63, 0, 0, 63]前面4个元素冒泡,63和12交换,63和45交换,65和45交换,交换3次,完成后a=[63, 45, 45, 12, 0, 0, 63];
当i=4,对a=[63, 45, 45, 12, 0, 0, 63]前面5个元素冒泡,没有交换;
当i=5,对a=[63, 45, 45, 12, 0, 0, 63]前面6个元素冒泡,没有交换;
当i=6,对a=[63, 45, 45, 12, 0, 0, 63]前面7个元素冒泡,63和0交换,63和0交换,63和12交换,63和45交换,63和45交换,交换5次。
总共交换了1+1+3+5=10,既cnt=10,选项B正确。
17.C
【详解】本题主要考查Python程序的执行与调试。分析程序可知,当i=0、1、2时,均不满足while循环条件,此时top=2,stk=[0,1,2,-1]。当i=3时,第一次while循环结束,top=1,d=stk[2]=2,ans[2]=3-2=1;第二次while循环结束,top=0,d=stk[1]=1,ans[1]=3-1=2,while循环结束,for循环也结束,因此,执行该程序段后,输出ans的结果是[0,2,1,0],故本题选C选项。
18.顺序结构
【详解】本题考查的知识点是程序基本结构。程序有三种基本结构:顺序结构、选择结构和循环结构。其中,顺序结构是最简单的程序结构。在顺序结构中,程序的各个操作按照它们在源代码中的排列顺序自上而下依次执行。这种结构相对直接明了,只需要按照逻辑顺序编写代码即可。故答案为:顺序结构。
19.求1~100(含100)的偶数之和
【详解】本题考查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)。分析程序可知,该程序实现求1~100(含100)的偶数之和。
20.40
【详解】本题考查循环结构。这段代码使用了一个while循环。循环开始时,s的值为0。然后,循环检查s是否小于或等于30。如果条件成立,循环体内的代码将被执行。在循环体内,s的值增加10,然后再次检查循环条件。这个过程会一直重复,直到s的值大于30。循环结束后,最后一次s增加10的操作也会执行,将s的值增加到40。所以,打印出的结果是40。故答案为:40。
21.3 6 9
【详解】本题主要考查Python循环结构的应用。
这段代码遍历从1到9的整数,并打印出其中可以被3整除的数。
for i in range(1,10):这行代码创建了一个循环,从1开始到9结束(range()函数的上限是不包含的)。在每次循环中,i的值都会变成下一个数。
if i%3==0:这行代码检查i除以3的余数是否为0。如果为0,那么这个数就是3的倍数。
print(i):如果i是3的倍数,这行代码就会打印出这个数。所以,这段代码会打印出数字3,6和9。
22.1
1
1
1
1
1
……
【详解】本题考查循环结构。这段代码实际上会陷入无限循环,不会停止。循环条件 i <= 10 在循环内部没有更新 i 的值,因此 i 的值永远都不会大于10,导致无限循环,不断打印出1。
23.31
【详解】本题考查的是自定义函数。阅读程序可知,程序功能是循环对1~n的数字进行报数,报到k出列,直到最后只剩下一个数。fun(41,3)是对1~41的数字进行报数,报到3出列。最后剩下的数字是31。
24.正确
【详解】本题考查的是Python循环与选择语句。range(1,20)生成1~19的整数,阅读程序可知,只有i为1~19的偶数,才执行赋值语句sum=sum+i。故一共被执行了9次。题干中说法正确。
【点睛】
25.正确
【详解】本题考查的知识点是循环结构应用。循环语句可以嵌套使用。在一个循环的内部再使用另一个循环,这就是循环的嵌套。在大多数编程语言中,如Python,Java,C++等,都支持循环的嵌套。故答案为正确。
26.正确
【详解】本题考查Python循环结构的描述。如果循环以“while 1:”开头,while的条件是1,非零即为真,在不加干预的情况下,程序会一直运行下去,陷入死循环。表述正确。
27.错误
【详解】本题考查循环。for 循环和 while 循环是两种不同类型的循环结构,它们用于不同的情况,但它们通常可以相互替换。for 循环通常用于已知循环次数的情况,例如遍历一个列表或迭代器中的元素。while 循环通常用于未知循环次数的情况,即当某个条件为真时继续执行循环。在某些情况下,可以使用 for 循环来模拟 while 循环,反之亦然,但这通常需要额外的控制语句。故说法错误。
28. C dic[sta].append(j)或dic[sta]+=[j] c=0 maxsta或str(maxsta) "大项" head(10)
【详解】本题考查程序分析。
1、根据题意需要查找出大项为足球的数据。正确写法为df[df.大项==“足球”]故选择C。
2、查找赛事并更新dic字典为竞赛场馆的赛事故填写dic[sta].append(j)或者dic[sta]+=[j]。
3、c统计赛事数量,当赛事数量小于等于max时候,给c清零。故c=0。
4、连续举办赛事最多的场馆存放在maxsta中,故填写maxsta或str(maxsta)。
5、根据代码grp=df.groupby可知要按照大项分类汇总金牌总数。故填写"大项"。
6、图示显示金牌数最多的前10名,故填写head(10)。
29. C temp>maxv or temp<minv 192.168.1.76:8080/input B 湿度传感器出现故障 蜂鸣器2和加湿器同时出现故障
【详解】本题考查程序分析。1、服务器和数据库之间需要双向数据流向,故选择C。2、启动空调判断条件为温度大于上限,或者低于下限启动。故temp>maxv or temp<minv。3、@app.route("/input")和 app.run(host="192.168.1.76",port=8080),可知URL为192.168.1.76:8080/input。4、存储程序和数据库文件分别由数据库和WEB服务器完成。故选择B。5、湿度变化,系统不工作。所以与湿度有关的硬件有问题。故湿度传感器出现故障,也可能是蜂鸣器2和加湿器同时出现故障。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$