内容正文:
4.4运用循环结构描述问题求解过程2023—2024学年高中信息技术粤教版(2019)必修1
一、选择题
1.在信息传递的过程中,通常会将一些敏感信息进行加密,以下是实现加密功能的Python程序段。
mw=input("请输入明文:")
mm="";key=2
for ch in mw:
if"0"<=ch<="9";
mm=str((int(ch)+key)%10)+mm
else:
mm+=chi
print(mm)
若输入的明文为“Hi,2024”,则执行代码后的输出结果为( )
A.,6424iH B.6424Hi C.6424Hi, D.Hi,6424
2.下列Python程序段中,循环体执行了( )
i=5
while i==0:
i=i-1
A.0次 B.1次 C.5次 D.无数次
3.下列Python代码段的功能是计算( )
s=0
a=−1
for i in range(1, 11):
t=1
for j in range(1,i+1):
t=t∗j
a=−a
s+=t*a
print(s)
A.1+2+3+4+5+6+7+8+9+10 B.1!+2!+3!+4!+5!+6!+7!+8!+9!+10!
C.1−2∗3+3∗4−4∗5+5∗6−6∗7+7∗8−8∗9+9∗10−10∗11 D.1!−2!+3!−4!+5!−6!+7!−8!+9!−10!
4.桶排序并非常规的排序算法,它实际上是一种分治思想的实践。桶排序的过程可以分为4步:1-根据数据的特征将数据分为若干的桶,给每个桶规定可以存储的值的范围;2-将原数列的数据放入各个桶中;3-对每个桶都进行排序;4-按照桶的顺序将桶内数据重新链接。有如下Python程序段:
def bucket_sort(a):
bucket=[]
b=[]
bucketnum=(max(a)-min(a))//len(a)+1 #根据数据特征确定桶数量
for i in range(bucketnum): #建桶
①
for x in a: #入桶
num=(x-min(a))//len(a)
②
for i in range(bucketnum):
bucket[i].sort() #详见“注意”
b+=bucket[i]
return b
a=[77,7,26,14,11,21,60,51,30,78]
print(bucket_sort(a))
#运行结果
[[7,11,14],[21,26],[30],[],[51],[60],[],[77,78]]
注意:桶排序更多适用与数据值域较大但分别较均匀的情况,其本质也只是用于分段,对于桶内数据一般不会再使用桶排序递归,而是采用更高效的排序算法。故在桶内排序时也直接使用了sort()方法加以区分和说明。
根据题意,划线处①、②两个空分别填入的代码为( )
A. ①bucket.append([]) ②bucket[num].append([])
B.①bucket.append(i) ②bucket[num].append(x)
C.①bucket.append(i) ②bucket[num].append([])
D.①bucket.append([]) ②bucket[num].appendx)
5.有如下Python程序段:
import random
defselect(s,k):
for i in range(k):
j=i+1
if j< len(s):
s=s[:j]+s[j+1:]
else:
s=s[:len(s)-1]
connect(i,s,k)
def connect(i,s,k):
list1=''
if i< k-1:
listl=listl+s+'-'
else:
list1=listl+s
print(listl,end='')
s="hello"
k=random.randint(1,4)
select(s,k)
执行该程序段后,输出结果可能是( )
A.hllo- B.hllo-hll-hl C.hllo-hlo D.hllo-hlo-hl-1
6.以下Python程序段的运行结果是( )
n=0
for i in range(1,4):
n=n+i
print (n)
A.4 B.3 C.6 D.1
7.下面的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
8.有如下python程序段:
s=0
for i in range(101):
s+=i
print("s=",s)
循环变量i的终值是( )
A.101 B.100 C.0 D.1
9.如图所示,温岭新天地的“我在温岭很想你”成了网红打卡地。
小明用字符串s存储“我在温岭很想你”,则获取“温岭”的Python表达式为( )
A.s[3:4] B.s[3:5] C.s[2:3] D.s[2:4]
10.算法如下所示,其中说法正确的是( )
k=20
while k==0:
k=k-1
A.循环体执行了0次 B.循环体执行了 1 次
C.循环体执行了 21 次 D.循环体执行了无数次
11.20.有如下 Python 程序段:
s=input("请输入字符串:")
a=[""]*10 ; a[0]=s[0] ; t=0
for i in range(1,len(s)):
if t>=0 and s[i]==a[t]:
t=t-1
else:
t=t+1
a[t]=s[i]
运行程序段,输入以下字符串,运行后变量t的值与其它三项不同的是( )
A.++**+ B.+*+** C.*+**+ D.*++*+
12.执行以下程序得到的结果是( )
i=-1
while(i<0):
i=i+1
print(i)
A.-1 B.0 C.1 D.i
13.有如下 Python 程序段:
from random import random
i=0
a=[0]*6
while i<=5:
a[i]=(int(random()*6+5))*(i%2+1)
for j in range(i):
if a[j]==a[i]:
i=i-l
break
i=i+1
程序执行后,数组a各元素的数据可能是( )
A.[5,16,12,18,9,10] B.[7,18,10,10,6,12]
C.[8,15,6,16,7,12] D.[6,12,5,18,8,10]
14.有如下visual basic程序:
private Sub command1_Click()
s=0
If s<=99 then
For j=1to 10
s=s+j
Next j
Else
print “程序出错!”
Endif
print “最后的s的值是:”;s
End Sub
关于该程序的控制结构的说法不正确的是( )
A.顺序结构包含了选择和循环结构
B.选择结构是由块条件语句构成
C.选择结构包含了循环结构
D.循环结构包含了选择结构
15.有如下Python程序段:
s="Python"
ans=""
for i in range(len(s)):
c=s[i]
if "a"<=c<="z":
if i%2==0:
c=chr((ord(c)–ord("a")–i)%26+ord("a"))
else:
c=c.upper( ) #x.upper( )将字符串x中的大写字母转换成小写字母
ans+=c
print(ans)
执行该程序段后,输出的内容是( )
A.PYwHtN B.YrHkN C.PaTIOt D.PYrHkN
16.有如下 Python 程序段:
n=10
m=0
d=[False]*10
for i in range(1,int(n**0.5)+1):
j=3*i
while j<n:
d[j]=not d[j]
j=j+3
for i in range(n):
if d[i]:
m=m+1
print(m)
执行该程序段后,变量 m 的值为( )
A.2 B.1 C.3 D.0
17.有下面一段程序:
n = 10
list = [ 1, 5, 2, 3, 8, -9, 5, 6, 7, -10 ]
s = 0
i = 0
while list[ i ] > 0 and i <= n:
s += 1
i += 1
运行该程序后s的值为()
A.3 B.5 C.8 D.10
18.在一次抽奖活动中,需要在8人中随机抽取3个幸运奖,对应的Python程序如下:
import random
xm=["A","B","C","D","E","F","G","H"] #用字母代表人名
hj=[""]*3;
bz=[False]*8
i=0
while i<=2:
n=random. randint(0,7)
print(h j)
程序加框处代码合适的是( )
A.if bz[n]==False:
hj[i]=xm[n]
bz[n]=True
i+=1
B.if bz[n]==True:
hj[i]=xm[n]
bz[n]=False
i+=1
C.if bz[i]==False:
hj[n]=xm[i]
bz[i]=True
i+=1
D.if bz[i]==True:
hj[n]=xm[i]
bz[i]=True
i+=1
19.下列Python程序段运行的结果是
s = 0
i = 1
while i <= 100:
if i % 10 != 0 :
s+= i
i+ =1
print(s) ( )
A.4500 B.4578 C.5050 D.6657
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.C
【详解】本题考查程序分析。语句(int(ch)+key)%10的功能是把数字ch循环右移2位,即如果ch=0,循环右移2位结果是2,若ch=4,右移结果是6,若ch=2,右移结果是4。mm=str((int(ch)+key)%10)+mm的功能是把右移2位的结果逆序保存到mm中,如果ch不是数字,则按照顺序保存到mm中。故选C。
2.A
【详解】本题考查的是Python条件循环。i=5,i==0不成立,循环体没有执行。故本题应选A。
3.D
【详解】本题主要考查Python程序循环结构。分析程序可知,外层循环变量i的范围是1~10,内层循环中,变量t是计算i的阶乘,内层循环完,a变为其相反数,同时将t*a累加到变量s中,故该程序的功能是计算1!−2!+3!−4!+5!−6!+7!−8!+9!−10!,故本题选D选项。
4.D
【详解】本题考查Python程序分析。根据代码中注释可知,需要新建空列表作为桶,空列表个数存储在bucketnum中,故需要在列表bucket追加bucketnum个列表。代码为bucket.append([]) 。根据注释提示可知,需要遍历列表a,将元素追加到相应的桶中,故代码为bucket[num].append(x)。故选D。
5.C
【详解】本题考查程序分析。程序随机生成1到4的随机数赋值给变量k,调用select函数删除特定的字母,调用connect函数输出。在connect函数中,累加给变量list1,输出list1。假设随机生成k=1时,执行函数select,结果为hllo。假设k=2时,同理结果为hllo-hlo。假设k=3时,结果为hllo-hlo-hl。假设k=4时,结果为hllo-hlo-hl-h。故选择C。
6.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)。因此变量i依次取1、2、3,n=n+i=0+1+2+3=6,故本题选C选项。
7.A
【详解】本题主要考查Python分支结构。统计其中奇数个数的功能,故if用来判断i是否为奇数,故填i%2==1,故本题选A选项。
8.B
【详解】本题主要考查Python循环结构。由代码“for i in range(101):”可知变量i的范围是0~100,故循环变量i的终值是100,选B选项。
9.D
【详解】本题考查程序分析。A选项,结果为“岭”。B选项,结果为“岭很”。C选项,结果为“温”。D选项,结果为“温岭”。故正确答案为D选项。
10.A
【详解】本题主要考查Python循环结构。分析程序,k的初值是20,不满足循环条件,故循环体执行了0次,故本题选A选项。
11.A
【详解】本题主要考查Python程序的执行与调试。分析程序可知,该程序实现的功能是:输入字符串s,相邻的字符相等且t>=0时,执行t=t-1,反正执行t=t+1,同时更新a[t]=s[i]以比较下一组,分析选项可知,选项A执行后t的值是0,其余选项执行后t的值是2,故本题选A选项。
12.B
【详解】本题考查的是Python条件循环。i初始值为-1,while条件是i<0,执行循环体i=i+1,直到i>=0结束循环,故跳出循环时i值为0。选B。
13.D
【详解】本题考查的是循环嵌套语句及随机函数。由a[i]=(int(random()*6+5))*(i%2+1)可知列表a的取值范围,索引号为偶数其值为:[5,11),索引号为奇数其值为:[10,22)的偶整数,选项A中,a[2]=12超出11,不可能;由for语句可知,列表a中的元素不重复,选项B,有重复元素10,不可能;选项C中,a[1]=15不是偶数,不可能,故本题应选D。
14.D
【详解】本题考查控制结构。该程序中的循环结构(For...Next)并没有包含选择结构。故答案为:D。
15.D
【详解】本题主要考查Python程序的执行。分析程序可知,变量c依次取s中的字符,如果c是小写字母,则判断i的奇偶性,如果i是偶数,则执行c=chr((ord(c)–ord("a")–i)%26+ord("a")),即将该小写字母循环向前移i位,即“t”变为“r”,“o”变为“k”,如果i是奇数,则将小写字母变为大写字母。若c是其他字符,则保持不变,故执行该程序段后,输出的内容是PyrHkN,故本题选D选项。
16.A
【详解】本题主要考查Python程序的执行与调试。初始时,数组d均为False。变量i的范围是1~3,当i=1时,d[3]=True,d[6]=True,d[9]=True;当i=2时,d[6]=False,d[9]=False;当i=3时,d[9]=True,变量m统计列表d中值为True的个数,只有d[3]、d[9]值为True,故c=2,故本题选A选项。
17.B
【详解】本题主要考查Python程序的执行。当list[i]>0且i<=n时,s递增,i递增,否则退出循环,list[5]=-9<0,故s=s+1=0+1+1+1+1+1=5,故运行程序后s的值为5,故本题选B选项。
18.A
【详解】本题主要考查Python程序的执行与调试。数组bz标记每一个人是否被抽取,初始值均为False,表示均未被抽取,故首先判断bz[n]的值是否为False,如果是False,则更新hj[i]的值为xm[n],同时赋值bz[n]的值为True,表示已抽取,再i递增1,继续抽取下一个人,故本题选A选项。
19.A
【详解】本题主要考查Python程序执行。分析程序可知,该程序实现功能是1~100之间,将不能整除10的数累加起来,1~100的求和根据等差求和等于(1+100)*100/2=5050,故s=5050-(10+20+30+40+50+60+70+80+90+100)=4500,故本题选A选项。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$