内容正文:
高效作业9[第9课 循环结构]【A级 新教材落实与巩固】
1.有如下Python程序段:
x=0
for i in range(1,11,2):
x+=i
print(x)
执行该程序段后,输出的结果是( C )
A.9 B.16
C.25 D.36
【解析】 i的取值有1,3,5,7,9,累加i的值到x中,选项C正确。
2.有如下Python程序段:
s=['apple','banana','peach']
for i in range(3):
print(s[i%2],end=' ')
执行该程序段后,输出的结果是( D )
A.apple banana peach apple
B.apple banana apple banana
C.apple banana peach
D.apple banana apple
【解析】 i=0,s[0]为'apple';i=1,s[1]为'banana';i=2,s[0]为'apple',选项D正确。
3.有如下Python程序段:
s=1
i=0
while ________________:
i+=1
s*=i
print(s)
若计算s=1×2×3×4×5×6×7,则程序段中横线处应填入的代码是( C )
A.i<6
B.i<=7
C.i<7
D.i<8
【解析】 i的初值为0,则需要i先加1再进行累乘,i最大需要取到6,选项C正确。
4.有如下Python程序段:
s=0
for i in range(9):
if i%3==0:
s+=i
print(s)
执行该程序段后,s的值为( A )
A.9 B.18
C.6 D.15
【解析】 s用于累加0到8范围内3的倍数,s=0+3+6=9,选项A正确。
5.已知a=”012345”,b=[”012”,3,4,5],c={0:1,2:4,3:5}。下列语句执行完毕后,s 的值为5 的是( C )
A.s=0
for i in a[5]:
s=s+1)
B.s=10
for i in range(b[2]):
s=s-1
C.s=0,
while s<=c[2]:
s=s+1
D.s=10
while s>=c[3]:
s=s-1
【解析】 选项A,a[5]=”5”,执行1次循环,s的值为1,选项错误;选项B,b[2]=4,s=6,选项错误;选项D,c[3]=5,s=4,选项错误。
6.有如下Python程序段:
listn=[0,0,0,0,0,0,0,0,0,0]
for i in range(len(listn)):
if i==0 or i==1:
listn[i]=1
else:
listn[i]=listn[i-1]+listn[i-2]
执行该程序段后,listn[9]的值为( A )
A.55 B.34
C.21 D.0
【解析】 形成数列1 1 2 3 5 8 13 21 34 55
索引0 1 2 3 4 5 6 7 8 9
索引为9的元素值为55,选项A正确。
7.有如下Python程序段:
a=[3,2,1,-8,3,-2,8,6]
s=t=a[0]
for i in range(1,len(a)):
if s>0:
s+=a[i]
else:
s=a[i]
if s>t:
t=s
print(t)
执行该程序段后,输出的结果是( C )
A.6 B.-10
C.15 D.33
【解析】 将列表a中的元素值累加,当s小于等于0时,s初始化为当前元素值,输出过程中的最大值。s最大值为3-2+8+6=15,选项C正确。
8.有如下Python程序段:
a=[]
b=[1,5,4,1,5]
c={1:3,2:4,3:5,4:1,5:2}
for i in b:
if i not in a:
a.append(c[i])
print(a)
执行该程序段后,列表a的值为( C )
A.[1,5,4]
B.[3,2,1]
C.[3,2,1,2]
D.[3,2,1,3]
【解析】 若列表b中的元素值不在列表a中,则将字典c中的键值添加到列表a中,选项C正确。
9.有如下Python程序段:
s,x=0,0
for i in range(5):
if i<=1:
x=1
if i<=2:
x=2
if i<=3:
x=3
s+=x
print(s)
执行该程序段后,输出的结果是( C )
A.10 B.12
C.15 D.18
【解析】 3个分支语句都需要执行,执行结果如下,选项C正确。
i
x
s
0
3
3
1
3
3+3
2
3
3+3+3
3
3
3+3+3+3
4
3
3+3+3+3+3
10.2024·岱山中学检测有如下Python 程序段:
a=[82,15,36,28,63,90,10,71]
m=k=0
for i in range(len(a)):
n=(a[i]//10+a[i]%10)%10
if n>m:
m=n
k=i
print(k,m)
执行该程序段后,输出的结果是( C )
A.0 10 B.5 90
C.2 9 D.4 9
【解析】 由代码n=(a[i]//10+a[i]%10)%10可知,每次循环中将列表每个元素个位与十位之和对10求余数存储在n中,并查找余数最大值存储在m中,最大值的位置存储在k中;若存在多个最大值,则保留最先出现的位置,选项C正确。
11.针对选考有如下Python 程序段:
s=[”56”,”174”,”81”,”213”,”143”,”9”]
m=[1]*len(s)
for i in range(len(s)):
for j in range(len(s)):
if s[i]<s[j]:
m[i]+=1
print(m[2])
执行该程序段后,输出的结果是( A )
A.2 B.1
C.3 D.4
【解析】 利用双重循环对列表s中的字符串进行排名,元素值越大,排名越靠前;字符串大小先按首字符大小比较,如果首字符相同,则按第2个字符比较,以此类推,排名结果如下:
s=[”56”,”174”,”81”,”213”,”143”,”9”]
m=[3,5,2,4,6,1]
故选项A正确。
12.2024·天台中学检测有如下Python程序段:
s=[1,4,2,7,3,6,5]
n=len(s)
for i in range(n-1,0,-1):
if s[i]>s[i-1]:
s[i],s[i-1]=s[i-1],s[i]
print(s)
执行该程序段后,输出的结果是( D )
A.[1,2,4,3,7,5,6]
B.[1,4,2,3,6,5,7]
C.[7,1,4,2,3,6,5]
D.[7,1,4,2,6,3,5]
【解析】 程序功能:从后开始将大的数字交换前移。故选项D正确。
13.有如下Python 程序段:
a=”123456” #①
b=[6,5,4,3,2,1]
for i in range(6): #②
s=a[i]+b[i] #③
print(s) #④
执行该程序段后报错,则错误语句的序号是( C )
A.① B.②
C.③ D.④
【解析】 a[i]与b[i]数据类型不同,不能直接相加,会报错,选项C符合题意。
14.有如下Python 程序段:
a=[6,7,4,3,7,9,9,8]
min=4;max=5
for i in range(1,len(a)):
if a[min]>a[i]:
min=i
if a[max]<=a[i]:
max=i
print(”max=”,a[max],”,min=”,a[min],”,max-min=”,a[max]-a[min])
执行该程序段后,下列说法不正确的是( A )
A.“min=i” 共被执行了3次
B.“max=i” 共被执行了2次
C.输出的结果是“max=9, min=3,max-min=6”
D.循环一共进行了7 次
【解析】
i
初值
1
2
3
4
5
6
7
a[max]
9
9
9
9
9
9
9
9
a[min]
7
7
4
3
3
3
3
3
a[max]-a[min]
2
2
5
6
6
6
6
6
“min=i”执行了2 次,“max=i”执行了2次,输出结果为“max=9, min=3,max-min=6”,i 从1 循环到7,循环共进行7 次。故选项A错误。
15.有如下Python 程序段:
dict={”a”:[”apple”,[”abandon”,”ant”]],”b”:[”banana”,”bee”,”become”],”c”:[”cat”,”come”],”d”:”down”}
s=”abcd”
cnt=0
for i in s:
cnt+=len(dict[i])
print(cnt)
执行该程序段后,输出的结果是( C )
A.8 B.9
C.11 D.12
【解析】 遍历字典,i 表示键,dict[i]表示的是值,该字典有4 个键值对:
键:”a”,值:[”apple”,[”abandon”,”ant”]],列表元素个数2;
键:”b”,值:[”banana”,”bee”,”become”],列表元素个数3;
键:”c”,值:[”cat”,”come”],列表元素个数2;
键:”d”,值:”down”,字符串长度4。
通过循环遍历,cnt 存储的是2+3+2+4=11,选项C正确。
【B级 素养形成与评价】
16.针对选考2024·富阳中学检测有如下Python 程序段:
a=[1,5,9,2,6,8,3,4,7]
n=0;flag=True
for i in range(len(a)-1):
if a[i]<a[i+1] and flag==True:
n+=1;flag=False
elif a[i]>a[i+1] and flag==False:
n-=1;flag=True
print(n)
执行该程序段后,输出的结果是( D )
A.2 B.0
C.-1 D.1
【解析】 执行过程如下,选项D正确。
i
0
1
2
3
条件
if条件成立
不成立
elif条件成立
if条件成立
n
1
1
0
1
flag
False
False
True
False
i
4
5
6
7
条件
不成立
elif条件成立
if条件成立
不成立
n
1
0
1
1
flag
False
True
False
False
17.有如下Python程序段:
#列表a的初始值略
for i in range(6):
if (i+1)%2!=0:
if a[i]%10>5:
a[i]=a[i]//10
else:
a[i]=a[i]%10
else:
a[i]=a[i-1]+1
若a[0]到a[6]的值分别是2,3,4,5,0,1,则执行该程序段后,a[0]到a[6]各元素的初始值可能是( A )
A.26,1,4,2,8,3
B.12,1,14,2,11,3
C.15,1,2,3,4,5
D.29,1,40,2,3,30
【解析】 当i为偶数时,若a[i]的个位数大于5,则a[i]更新为它的十位数,否则更新为个位数;当i为奇数时,a[i]更新为前一项加1。选项A符合要求;选项B,a[5]不符合要求;选项C,a[1]不符合要求;选项D,a[3]不符合要求。
18.某些数据中存在“数字山峰”。例如,数据“21432748”中存在“1432”“274”两座“数字山峰”(必须包含上坡与下坡)。用于求数据中“数字山峰”的数量的Python程序段如下:
num=input(”请输入数字串: ”);c=0
for i in range(1,len(num)):
if and f==False:
f=True
elif and f==True:
c=c+1
f=False
print(”有”,c,”座数字山峰”)
上述程序段中加框处可选的代码有:
①f=True ②f=False ③num[i-1]>num[i]
④num[i-1]<num[i]
下列选项中,代码顺序正确的是( D )
A.①③④ B.①④③
C.②③④ D.②④③
【解析】 “数字山峰”是先有上坡再有下坡,由已知代码可得,f==True表示已有上坡,则(2)处为num[i-1]<num[i];(3)处为num[i-1]>num[i];由elif的语句可知,一个“数字山峰”结束,flag初始化为False,选项D正确。
19.在整数序列1 到10(含1 和10)中找出连续的数字,使其相加后的结果为20,实现该功能的Python 程序段如下:
for i in range(1,10):
sum=0;j=i
while ①________ and j<=10:
sum+=j
j+=1
if sum==20:
print(”从”,②________,”到”, ③________)
若输出的结果是“从2 到6”,则执行该程序段后,上述程序段中①、②、③处应填入的代码分别为( D )
A.①sum<=20 ②i+1 ③j-1
B.①sum<20 ②i ③j
C.①sum<=20 ②i+1 ③j
D.①sum<20 ②i ③j-1
【解析】 for循环遍历范围的开始位置,②处填写i,while循环查找i位置开始到范围结束的位置,并将值累加到sum中,while循环有两个结束条件:j超过10或sum>=20,故①处填写sum<20;循环结束时,j指向结束的后一位,③处填写j-1。选项D正确。
20.2024·丽水中学检测列表a有2*n个元素,各元素为互不相等的正整数(n≥1),要在其中找到最大值和次大值,并分别存储到变量m1和m2中。实现该功能的Python程序段如下:
m1=0;m2=0
for i in range(0,2*n,2):
if a[i]>a[i+1]:
t1=a[i];t2=a[i+1]
else:
t1=a[i+1];t2=a[i]
if :
m1=t1;m2=t2
elif:
m2=m1;m1=t1
elif:
m2=t1
上述程序段中加框处的代码由以下3部分组成:
①t1>m1 ②t1>m2 ③t2>m1
下列选项中,代码顺序正确的是( B )
A.①②③ B.③①②
C.②③① D.③②①
【解析】 首先for循环的步长是2,两个一组查找最大值和次大值;第1个if,每次新遇到一组中的较大值,存储在t1中,另一个存储在t2中;第2个if,由语句块可知,第1处,m1、m2都更新,则应是t2>m1,选③;第2处原有最大值,变为次大值,则t1>m1 and t2<=m2,选①;第3处只更新m2,则t1>m2 and t1<=m1,选②,选项B正确。
21.有一组正整数,要求对其中的奇偶数进行交换。交换后偶数在前,奇数在后,并保持相对顺序不变。实现该功能的Python程序段如下:
a=[5,10,21,7,24,14,9,11,36,37]
n=len(a);b=[0]*n
num=0;k=0
while k<10:
if ①________:
b[num]=a[k]
num+=1
else:
②________
k+=1
for j in range(n-num,n):
③________
print(a)
上述程序段中①、②、③处应填入的代码分别为( A )
A.①a[k]%2==1 ②a[k-num]=a[k]
③a[j]=b[j-n+num]
B.①a[k]%2==0 ②b[k-num]=a[k]
③a[j]=b[j+num]
C.①a[k]%2==0 ②a[k-num]=a[k]
③a[j]=b[j+num]
D.①a[k]%2==1 ②b[k-num]=a[k]
③a[j]=b[j-n+num]
【解析】 引入列表b进行临时存储,由range(n-num,n)和③可知,是将列表b中的奇数存入列表a的后半部分;①处应判断是否为奇数,并存入列表b,排除选项B、C;②处应是将列表a中的偶数前移,选项A正确。
22.2024·遂昌中学检测有如下Python 程序段,info列表存储了学生的性别与分数。
info=[”男”,79,”女”,97,”女”,94,”男”,91,”女”,85,”女”,100,”男”,82]
tot=c=0
for i in range(0,len(info),2):
if info[i]==”女”:
continue
tot+=info[i+1]
c+=1
print(round(tot/c,1))
执行该程序段后,输出的结果是__84.0__。
【解析】 统计男生的平均分,遇到女生,则跳过当次循环。
23.基斯顿·卡曼发明了阶乘符号,自然数n的阶乘用n!表示。n!=1×2×3×…×n,并规定0!=1。
现编写程序,功能为:输入一个正整数,输出该数的阶乘。程序运行界面如图所示:
实现该功能的Python程序段如下,请在横线处填入合适的代码。
n=int(input('请输入一个正整数: '))
s=1
if n !=0:
for i in range(①__1,n+1__):
s=②__s*i__
print('阶乘为: ',s)
【解析】 由n!=1×2×3×…×n可得,累乘时i的初始值为1,需要取到n,结合range的特点,①处为1,n+1;②处为累乘,答案为s*i。
24.2024·艾青中学检测给定一个十进制整数n,求出从1到n的所有整数中出现“1”的个数。例如,n=2时,1、2中出现1个“1”;n=12时,1、2、3、4、5、6、7、8、9、10、11、12中出现5个“1”。现编写一个程序,功能为:输入整数n,执行程序后,输出该范围内出现“1”的个数。程序运行界面如图所示:
实现该功能的Python程序段如下,请在横线处填入合适的代码。
n=int(input('请输入整数范围: '))
count=①__0__
i=1
while i<=n:
x=i
while x>0:
if ②__x%10==1__:
count+=1
x//=10
③__i+=1__
print('该范围内1的个数有: ',count)
【解析】 ①count为计数器,初值为0;②数字循环执行%10取得个位上的值,判断是否等于1;③循环变量需执行+1,进入新一轮循环。
学科网(北京)股份有限公司
$$