2025届信息技术一轮复习练习:专题5 函数和模块(含答案)

资源下载
  1. 二一教育资源

2025届信息技术一轮复习练习:专题5 函数和模块(含答案)

资源简介

专题5 函数和模块
知识点一 自定义函数
1.使用Python程序编程探究平面上圆与圆的位置(圆心距离等于两个圆半径之和)相切的关系,程序代码如下:
def judge(a,b):
dis=(cir[a][0]-cir[b][0])**2+(cir[a][1]-cir[b][1])**2
if dis==(cir[a][2]+cir[b][2])**2:
  return 1
return 0
cir={'A':[1,1,1],'B':[4,5,4],'C':[0,2,1]}
#cir用于存储编号为'A'、'B'、'C'的三个圆圆心的x,y坐标及半径信息
cnt=judge('A','B')+judge('A','C')+judge('B','C')
运行程序后,变量cnt的值是(  )
A.0 B.1
C.2 D.3
2.有如下Python程序:
def count(a,i):
for j in range(i+1,len(a)):
if a[j]     return j-i
return 0
a=[4,2,2,4,1,6]
b=[1]*len(a)
for i in range(len(a)-1):
b[i]=count(a,i)
print(b)
运行该程序,则b[1]的值为(  )
A.0 B.1
C.2 D.3
3.有如下Python加密程序段,以下说法正确的是(  )
def encrypt(code,key):
code_new=''
for s in code:
s1=ord('a')+((ord(s)-ord('a'))+key)%26
code_new+=chr(s1)
return code_new
code=input(″code=″)
print(encrypt(code,2))
A.该加密程序段所用的加密算法是换位密码法
B.若输入字符串code为“App”,则输出的结果为crr
C.若要对数字字符逐个右移进行加密,则只需将加框处语句修改为“(int(s)+key)%10”
D.将加框处语句修改为“ord('a')+((ord(s)-ord('a'))-key)%26”可将加密的密文还原为明文
4.有如下程序段:
def ds(s,i):
if ″a″<=s[i]<=″z″:
s=s[:i]+s[i+1:]
elif ″0″<=s[i]<=″9″:
s=s[:i]+str((int(s[i])+6)%10)+s[i+1:]
return s
s=″Yy23mm4″
i=0
while is=ds(s,i)
i+=1
print(s)
执行上述程序段后,s的值为(  )
A.″Y89m0″ B.″Y29m0″
C.″y23m4″ D.″89mm0″
5.所谓亲密数是指如果整数x的全部因子(包括1,不包括x自身)之和等于y,且整数y的全部因子之和等于x,则x和y称为一对亲密数(x与y不相等)。小王想通过Python程序统计1~1000间的亲密数对的个数。
def yzh(m):
yz_sum=0
for i in range(2,m//2+1):
if ①________:
     yz_sum+=i
return yz_sum
n=0
for x in range(1,1001):
y=yzh(x)
if ②________:
n=n+1
print(″共有亲密数对:″,n)
则代码中①②处的语句可为(  )
A.①m%i!=0 ②x==yzh(y) and x!=y
B.①m%i==0 ②x==yzh(y) and x!=y
C.①m%i!=0 ②x==yzh(y) or x!=y
D.①m%i==0 ②x==yzh(y) or x!=y
6.有如下Python程序段:
def f(m):
a=m%10
b=m//10%10
c=m//100
if c**3+b**3+a**3==m:
return ″YES″
else:
return ″NO″
m=int(input(″输入一个三位数:″))
print(f(m))
执行该程序段后,若输出结果为“YES”,则输入变量m值可能为(  )
A.121 B.134
C.153 D.142
7.有如下Python程序段:
def sel(a,b,c):
if aa+=b;b=a-b;a=a-b
if at=a;a=c;c=t
print(a,b,c)
sel(1,2,3)
执行该程序段后,输出的结果是(  )
A.1,2,3 B.3,2,1
C.3,1,2 D.1,3,2
8.回文素数:
(1)素数:指整数在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。例如11,它只能被1和11整数,所以11是素数。
(2)回文数:正读和反读都是一样的数字,例如12321,它的正反都是一样,是回文数字。编写Python程序,实现如下功能,找出100~n中的所有的回文素数(n为>=100的正整数)。程序代码如下,请回答下面问题:
(1)如果n=1000在最后添加print(151 in L),该语句的输出的结果是________。
(2)请在横线处填入合适的代码。
import math
def prime(n): #判断n是否是素数
i=2
k=int(math.sqrt(n))
while i<=k:
if ①________:
     break
i=i+1
return i>k
def rev(n): #倒转数字
t=0
while ②________:
t=t*10+n%10
n=n//10
return t
n=int(input('请输入整数 n:'))
L=[]
for i in range(100,n+1):
if ③________:
if prime(i)==True:
    L=L+[i]
print('100到n中的回文素数:',L)
9.数学中,有一些数比较神奇,如数″101″,既是一个质数又是一个回文数(从左到右和从右到左是看一样的),我们称这样的数为“神奇数”。小慈设计算法并编写程序来找出范围[a,b]间的所有“神奇数”,运行效果如图所示(范围为[100,200])。请回答下列问题。
(1)区间范围[300,400]中的“神奇数”有________。(写出任意一个满足符合区间题描述的“神奇数”)
(2)Python程序实现代码如下所示,请将划线处代码补充完整。
def isprime(k): #判断k是否为质数
for i in range(2,①________):
if k % i==0:
     return False
return True
def ishw(k):
flag=True
for i in range(len(k)//2+1):
if k[i]!=k[②________]:
     flag=False
     break
③________
a,b=map(int,input().split()) #在同一行中输入a、b两个整数
for i in range(a,b+1):
if isprime(i) and ④________:
print(i)
10.小明同学设计了一种加密算法,将自己的一些私密字符串数据(例如他在各个网站和APP注册的用户名和密码等数据信息,这里统称为明文数据)进行了加密,他设计的加密算法有如下规则:
①将明文数据中的所有大写字母均转换为小写字母,例如A→a,B→b…Z→z
②将明文数据中的所有数字减去2变成另一数字,例如0→8,1→9,2→0…9→7
③明文数据中的其他字符均不转换
④将加密后的数据倒序输出,例如“abc→cba”
例如明文数据“aBC+789”加密后的数据为“765+cba”,他根据以上加密规则编写了下列Python 程序:
def jiami(x):
if ″A″<=x<=″Z″:
y=①________
elif ″0″<=x<=″9″:
y=str((int(x)-2)%10)
else:
y=②________
return y
mingwen=input(″请输入明文数据:″)
miwen=″″
for i in mingwen:
miwen=③________
print(″加密后的密文为:″,miwen)
(1)根据小明的加密算法,明文字符串“My123”加密后的结果为________。
(2)根据题意,请在划线①②③处填上合适的语句或表达式。
11.某高速公路全长521公里,含起点与终点共设有15个出入口,编码为0~14,各站点离起点距离如表所示。该高速公路对于不同类型的车辆,采取不同的收费标准,各类型车辆的收费标准如下,总费用=入口费+总里程*里程费,为方便找零,实际收取的费用做四舍五入处理。
各站点离起点距离表(单位:公里)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
0 21 56 78 121 163 185 221 257 271 294 314 399 478 521
五类车辆收费标准表
车辆类别 客车 货车 入口费(元) 里程费(元/公里)
一类 20座(含)以下 2吨(含)以下 5 0.40
二类 20座以上40座 (含)以下 2吨以上5吨(含)以下 10 0.80
三类 40座以上 5吨以上10吨(含)以下 15 1.20
四类 / 10吨以上15吨 (含)以下 20 1.60
五类 / 15吨以上 25 2.00
该高速公路某天各站点车辆的进出情况存储在“Highway.txt”中,第一项数据为车辆的进出站状态(0表示进站,1表示出站),第二项数据为车辆类别,第三项数据为站点编号(0~14),第四项数据为车牌号。小张编写了Python程序,计算高速公路一天的总收入。
(1)某4座小客车从7号站点进入高速,1号站点出高速,应缴费________元。
(2)程序代码①②③如下所示,请将划线处代码补充完整。
def fee(i,o,t):
mileage=①________
price1=t*5
price2=t*0.4*mileage
return price1+price2
f=open(″Highway.txt″,″r″,encoding=″utf-8″)
line=f.readline()
total=0
dic={}
s=[0,21,56,78,121,163,185,221,257,271,294,314,399,478,521]
b={″一类″:1,″二类″:2,″三类″:3,″四类″:4,″五类″:5}
while line!=″″:
line=line.strip() #去除末尾换行符
a=line.split(″,″)
if ②________:
dic[a[3]]=int(a[2])
else:
money=fee(dic[a[3]],int(a[2]),b[a[1]])
total=③________
line=f.readline()
f.close()
print(″该高速公路总收入为:″,total)
知识点二 模块的导入和应用
1.编写Python程序,模拟“石头剪刀布”的游戏,实现电脑随机输出“石头”、“剪刀”、“布”。函数功能表如下:
名称 含义
random.random() 随机生成一个[0,1)范围内的实数
random.randint(a,b) 随机生成一个[a,b]范围内的整数
random.sample(seq,k) 从序列中随机挑选k个元素
random.shuffle(seq) 将序列的所有元素随机排序
下列代码段中能够实现该功能的是(  )

import random a={0:″石头″,1:″剪刀″,2:″布″} b=int(random.random()*2) print(a[b])

import random a={0:″石头″,1:″剪刀″,2:″布″} b=random.randint(0,2) print(a[b])

import random a=[″石头″,″剪刀″,″布″] b=random.sample(a,1) print(b[1])

import random a=[″石头″,″剪刀″,″布″] random.shuffle(a) print(a[1])
A.①③ B.①④
C.②③ D.②④
2.有如下Python程序段。
import turtle as tt
t=tt.Pen() #导入海龟,定义画笔t
import random
tt.bgcolor(″white″)
colors=[″red″,″green″,″blue″,″yellow″]
for x in range(100):
t.pencolor(colors[x%random.randint(1,4)]) #设置画笔的颜色
t.cirle(x) #画半径是x像素的圆
t.left(91) #画笔方向逆时针旋转91度
关于该程序段,下列说法正确的是(  )
A.程序运行后,绘制了100个同心圆
B.程序运行后,绘制的所有圆的颜色不可能都为红色
C.程序运行后,最后绘制的一个圆的颜色可能为黄色
D.程序运行后,绘制的各圆没有交点
3.有Python程序如下:
import random
n=7
a=[0]*n
a[0]=random.randint(60,100)
for i in range(1,n):
a[i]=a[i-1]-random.randint(0,i)
for i in range(1,n,2):
a[i]=a[i]-a[i-1]%2
print(a)
执行上述程序后,输出的数据可能为(  )
A.[67,65,64,64,61,61,54]
B.[72,71,72,69,67,62,57]
C.[83,81,81,77,75,73,69]
D.[94,94,94,89,89,88,82]
4.有如下程序段:
from random import randint
s=″python″
k=randint(1,4)
for i in range(k):
j=i+1
while js[i]:
j+=1
if js=s[:j]+s[j+1:]
else:
s=s[:len(s)-1]
print(s)
执行该程序段后,s的值不可能是(  )
A.″py″ B.″pyo″
C.″pytn″ D.″pyton″
5.生成一组由数字1~8组成的8位不重复的随机密码,Python程序段如下:
from random import*
a=[0]*8
for i in range(8):
a[i]=i+1
k=8;s=''
for i in range(8):
m=randint(0,k-1)
print(s)
方框中的代码由以下三部分组成:
①k-=1 ②a[m]=a[k-1] ③s+=str(a[m]) 代码顺序正确的选项是(  )
A.①②③ B.②③①
C.②①③ D.③②①
6.有下列Python程序段:
import random
s=input(″请输入字符串:″)
x=random.randint(3,6)
n=len(s)
if len(s[0:x])r=s[x:n]+s[0:x]
else:
r=s[0:x]+s[x:n]
print(r)
执行该程序段,若输入“helloworld”(不包含双引号),则输出的结果不可能的是(  )
A.loworldhel B.oworldhell
C.helloworld D.worldhello
7.小明用下列Python程序将图a处理成图b所示效果
#导入Image、numpy、pyplot库,代码略
img=np.array(Image.open('dj.jpg').convert('L'))
row,cols=img.shape
for i in range(row):
for j in range(cols):
if img[i,j]>188: #第7行
     img[i,j]=1 #第8行,1表示白色
else: #第9行
     img[i,j]=0 #第10行,0表示黑色
#输出图像,代码略
发现处理后的图像不理想,他要想将图像处理成图c所示效果,则可做的修改是(  )
A.将第7行中的数字'188'改成'138'
B.将第7行中的数字'188'改成'250'
C.将第7行中的'>'改成'<'
D.将第8行的代码与第10行的代码互换
8.现有一幅文件名为“车牌.jpg”的彩色图像,车牌底色为蓝色,如图a所示,通过Python程序对该图像进行二值化,即将车牌蓝色部分变为白色,其他全部变为黑色,如图b所示,以凸显出车牌的轮廓。程序代码如下,请在划线处填入合适的代码。
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt #获取车牌蓝色的RGB分量的边界,红色rl,r2,绿色gl,g2,蓝色 b1,b2。代码略
img=np.array(Image.open(″①________″))
#打开图片并将其像素矩阵存入img
rows,cols=img.shape[0],img.shape[1]
imgnew=np.zeros(shape=(rows,cols))
# imgnew用于存储结果图像,大小和 img相同
for i in range(rows):
for j in range(cols):
r,g,b=img[i,j] #获取img当前位置的r,g,b分量
if r1<=r<=r2 and g1<=g<=g2 and b1<=b<=b2:
     imgnew[i,j]=255 #将新矩阵该位置设为白色
else:
     ②________
plt.figure('车牌')
plt.imshow(imgnew,cmap='gray')
plt.axis('off')
plt.show()
9.如图所示的车牌,经过如下Python程序处理后,
from PIL import Image
f=open(″cp.txt″,″w″) #以写入模式打卡“cp.txt”文件
im=Image.open(″cp.jpg″)
im=im.convert(″L″)
im=im.resize((90,21)) #将图片尺寸大小修改为 90*21
pix=im.load() #读取所有像素点的颜色值
for j in range(im.size[1]):
ans=″″
for i in range(im.size[0]):
if pix[i,j]>=128:
     r=″*″
else:
     r=″ ″
    ans+=r
ans=ans+″\r\n″ #″\r\n″表示回车换行
f.write(ans)
f.close()
“cp.txt”文件得到的效果是(  )
10.答题卡的准考证填涂区域如图a所示,将该图以行的方式进行编码,未填涂的地方用0表示,填涂的地方用1表示,则第1行编码是:000110000,第2行编码是:000000001,……,最后1行(第10行)编码是:100000000。由于每一行的编码都是9位二进制,所以,将每一行编码前后连接起来,可以得到一个长度为90的二进制字符串。
在文件codes.txt中,保存了某班所有同学的姓名和准考证的90位长度二进制编码,请设计算法,解析出每一位同学的准考证号,并将解析结果保存在文件zkzh.txt文件中(注:由于填涂错误,可能导致某些同学的编码无法解析出对应的准考证号)。codes.txt和zkzh.txt文件内容示例如图b和图c所示:
实现上述功能的Python代码如下,请回答下列问题:
def jiexi(code): #将二进制编码字符串解析为准考证号字符串
n=len(code)
if n!=90:
return 'Error!'
else:
s,t='',0
for i in range(n-1,①________,-1):
     c=0
    for j in range(i,-1,-9):
       if code[j]=='1':
         c+=1
         ②________
    if :
      return 'Error!'
    else:
       s+=str(t)
return s
#主程序
fin=open('codes.txt','r')
fout=open('zkzh.txt','w')
for info in fin:
info=info.strip() #strip()清除字符串末尾的换行标记
info_list=info.split(',')  #split()将字符串分割为字符串列表
fout.write(info_list[0]+',')
fout.write(③________+'\n')  #'\n'表示换行
fin.close()
fout.close()
(1)请在划线处填入合适代码。
(2)加框处代码有误,请修改为正确代码。
11.设计一个答题卡填涂识别程序(答题卡样式如图a所示,每张答题卡共计5个选择题)。具体算法思想如下:
①读取答题卡图像,根据图像像素点灰度值(根据RGB值计算得到,若小于设定阈值则表示已填涂),确定单个像素点是否被填涂;然后根据单个选项填涂区域内像素点的填涂比例,确定当前选项是否被填涂。如果填涂比例超过70%,表示选项已涂。
②建立答题卡坐标模型(如图b),计算每个选项坐标位置;根据坐标位置遍历每个选项,读取并存储选项值。
实现上述功能的Python程序如下,请回答下列问题:
(1)程序运行,读取图a答题卡1,输出结果为“CBDCA”,则识别答题卡2,输出结果为________。
(2)请根据题目要求,完善程序代码:
from PIL import Image
x0=39;y0=18 #初始化(x0,y0)像素点坐标
fw=23;fh=13 #初始化选项填涂区宽度和高度
ch=″ABCD″;s=″″
def judge(x,y): #判断一个选项是否填涂
count=0
for i in range(x,x+fw+1):
for j in range(y,y+fh+1):
       R,G,B=pixels[i,j] #提取填涂区i行j列位置像素点RGB值
    if 0.299*R+0.587*G+0.114*B<132:#设定灰度阈值为 132
       count+=1
return  #选项区域内>=70%像素点填涂表示该选项已填涂
tw=35;th=22
image=Image.open(″答题卡1.bmp″) 
#用Image模块打开答题卡1图片
pixels=image.load()
①________#设定答题卡题数
for row in range(num):
flag=False
for col in range(4):
a=x0+tw*col
②________
if judge(a,b)==True:
    ③________
    flag=True
if flag==False:
s+=″#″
print(s)
(3)程序加框处语句有误,应改为:________。
12.用以下算法记录图像的像素点分布,现有图像如图a所示,先将像素的颜色值进行调整,使之成为一幅黑白图像如图b所示,再将黑白图像中像素点(0表示黑色,1表示白色)分布以列表形式存储,如[2310,321,1230……]表示先有231个连续的黑色像素,再接着是32个连续的白色像素,再接着是123个连续的黑色像素……,列表中部分数据如图c所示。
实现上述功能的Python代码如下:
#导入库代码略
img=np.array(Image.open(″hz.png″).convert(″L″)) #将图像转换为二维矩阵
rows,cols=img.shape #图像尺寸分别赋值,rows表示行数,cols表示列数
for i in range(rows):
for j in range(cols):
if img[i,j]>180: #0~255表示256级灰度值,0表示黑色,255表示白色
     img[i,j]=1
else:
     img[i,j]=0
plt.imshow(img,cmap=″gray″) #显示灰度图像
plt.show() #弹出包含了图片的窗口
c=img[0,0];cnt=0;ys=[]
for i in range(rows):
for j in range(cols):
if img[i,j]==c:
      ________________
else:
     ys.append(cnt*10+c)
     cnt=1
     
ys.append(cnt*10+c)
print(ys)
(1)由程序代码可知,对图像的记录方式采用的方式是________(填字母:A.逐行记录/B.逐列记录/C.随机)。
(2)若得到图d颜色加深的图像,则划波浪线处代码应修改为________(单选)。
A.img[i,j]>210
B.img[i,j]>140
C.img[i,j]<140
D.img[i,j]<210
(3)在横线上填上合适的代码。
(4)程序加框处代码有错,请改正。
专题5 函数和模块
知识点一
1.C [本题考查自定义函数。字典cir初始存储了三个圆的圆心和半径信息。judge('A','B')是判断圆A和圆B是否相切,如果相切,返回值为1,否则为0。当前A、B两圆,B、C两圆相切,所以变量cnt的值为2。]
2.D [自定义函数功能是在索引位置i后面找到第1个比该a[i]小的数,返回他们的之间的距离,若后面没有比较他小的数,返回0。数组b的值依次为[1,3,2,1,0,1]。]
3.D [A选项是移位加密。B选项输出结果为wrr。]
4.B [如果是小写字母,则进行删除操作。若是一个数字,循环向后移3位。i=1时,删除字符y,s=″Y23mm4″,接着i值为2,3变9,删除第1个m,接着4变0。]
5.B [本题考查自定义函数及其调用。从程序可得自定义函数的功能为求自然数除本身外的因子和,①后将i累加进入,因此i为质因数,满足m%i==0,②处for循环的作用为遍历1-1000所有的书,寻找总共有多少数是满足条件的,并且输出,以满足x所有的质因数之和为y,同时还需要满足x==yzh(y) and x!=y才能说是亲密数,因此答案为B。]
6.C [本题考查自定义函数的应用。a、b、c分别是数m的3个位上的数字,符合立方和等于他本身,因此属于水仙花数。]
7.C [语句组a+=b;b=a-b;a=a-b和t=a;a=c;c=t的功能均为交换两个变量的值。]
8.(1)True (2)①n%i==0 ②n>0或n!=0或n>=1 ③rev(i)==i
解析 本题考查自定义函数及枚举算法(循环结构)。程序实现的效果:找出100~n中的所有的回文素数(n为>=100的正整数)。(1)根据程序可得最终符合条件的所有的数字都在列表L中,151满足回文素数的条件,因此151 in L的值为True,特别要注意的是首字母必须大写。(2)①自定义函数prime(n)的功能为判断n是否是素数,因此当找到2-k范围内能被n整除的数字时,就可以判断n为合数,因此①填n%i==0。②自定义函数rev(n)功能为倒转数字,while循环的作用为对数字n进行倒转,即取数字n各个位置上的数字进行相应的处理,通过循环体中n=n//10一句可得处理的过程为取后面的数字存储在t中,再取最后第二位数字,更新t的值……直到n中所有位置上的数字全都取完并且存入t中,因此当n>0时需要一直进去循环,答案为:n>0或n!=0或n>=1。③主程序为寻找100-n之间的所有的回文素数并且存储在列表L中,for循环完成遍历所有数据并且判断数据是否符合条件,将符合条件的数据存储在列表L中的功能,内置if语句调用函数prime,判断这个数是否为素数,还需要满足一个条件即回文,因此③判断当前数字与其回文数字是否相当:rev(i)==i。
9.(1)313、353、373、383写出其中任意一个均得分 (2)①k-1或其他等价答案 ②len(k)-1-i或其他等价答案 ③return flag或其他等价答案
④ishw(str(i))或其他等价答案
解析 (1)区间范围[300,400]的回文数有303,313,323,333,343,353,363,373,383,393,找出其中的素数。(2)自定义函数isprime判断k是否为质数,质数的条件是不能被除了1和他本身外的数整除,因此i的范围是2-(k-1)。自定义函数ishw判断字符串k是否是回文,0和len(k)-1,1和len(k)-2是对称位置,因此索引位置i和其对称位置之和为len(k)-1,则索引位置i的对称位置为可以表达为len(k)-1-i,如果不相等,则flag的值为False,③处将返回函数的值。④处将判断数i是否为回文,但要注意数据类型。
10.(1)109ym (2)①chr(ord(x)+32) ②x ③jiami(i)+miwen
解析 (1)数字循环左移2位,123变为901,y不变,m小写,再逆序。(2)①处将大写转换成小写。②x为其他字符,保持不变。③加密后的字符逆序输出。
11.(1)85 (2)①abs(s[o]-s[i])或abs(s[i]-s[o]) ②a[0]==″0″ ③total+int(money+0.5)
解析 本题考查自定义函数和字典的应用。a[0]值为″0″,表示入口,将车牌号和入口的站点编号保存在字典dic中,车牌号码作为键,站点编号作为值;若读取的是出口,在字典dic中读出该车牌的入站编码,该车牌号码对应入站、出站编号和车子类型传递给自定义函数fee,进行统计该车辆金额。在自定义函数中,参数t对应的值为b[a[1]],即车辆的类型。Mileage应为路程,即出口和出口差的绝对值。
知识点二
1.D [本题考查随机数、字典和列表的应用。A选项int(random.random()*2)产生的范围是0或1。C选项在列表a中随机挑一个,因此b的值应为″石头″、″剪刀″或″布″,而b[1]是这些字符中第1个字符。]
2.C [本题考查随机数和海龟模块应用。一共画了100个圆,每画完一个圆,画笔回到原点,且方向逆时针旋转91度,因此所有的圆起点是一样的,因此有交点,但不是同心圆。若x%random.randint(1,4)的值均为0,则可能全部是红色的。]
3.C [本题考查随机数。第一个循环的功能是产生一个非增数列,且从a[1]开始,与前面数的差距不得超过1,2,3,4,5,6。第二个循环的功能是对偶数位的数减去a[i-1]%2,即减去0或1。A选项最后一个数54与前一个数的差距为7,超出范围。B选项71前是偶数,可能是71-0,但后面不可能是72。D选项88前一个数是89,由此该数为89-1=88,而89-82=7,超出范围。]
4.C [本题主要考查顺序查找。随机产生1-4范围内的整数,查找字符串s中索引大于i的字符中,第一个在字母表中位于s[i]之前的字符对应的索引位置j。如果查找到j,则剔除字符串s中索引位置为s=s[:j]+s[j+1:]j的字符。否则如果未找到或j超出字符串s的长度,剔除s=s[:len(s)-1]字符串s中最后一个字符。]
5.D [把随机产生的字符连入s中,将最后一个位置的字符移动到m的位置,同时把长度减小1。]
6.D [本题综合考查了Random模块函数的应用及分支结构及字符串的切片。x为采用Random模块产生的[3,6]之间的随机整数,按照题意输入helloworld后n的值为10,带入if的条件表达式可得,执行第一个分支(将索引值x前面的字符后置)的条件为x<5,推得执行第二个分支(不改变字符顺序)的条件为x>=5,通过对选项的处理可知A中hel后置,x的值为3,可行;B选项hell后置,x的值为4,符合条件,可行;C选项不改变顺序,x>=5,可行;D选项hello后置,可得x=5,而x=5时应执行第二个分支的语句。]
7.A [在灰度图像中,从黑到白的值依次为0~255,图c相对图b来说,白色的区域更多,因此在二值化时,将阈值改小,将更多的区域设置为白色。]
8.①车牌.jpg ②imgnew[i,j]=0
解析 ①打开图片车牌.jpg文件。②二值化,大于某个阈值为255,否则为0,黑色的值为0。
9.B [黑色的转换为″*″,白色写入空白。]
10.(1)①n-10或80 ②t=j//9 ③jiexi(info_list[1])[::-1] (2)c!=1或者c>1 or c<1
解析 (1)jiexi函数的功能是将二进制编码code字符串解析为准考证号字符串。答题卡的准考证有9个数字,每一列表示一个数字,但code字符串是行存储的。①n表示code的长度,在循环for j in range(i,-1,-9)中,可见准考证号码的每两个数字之间索引位相差9。外循环i每循环一次,取出准考证号码的一个数字,因此外循环应循环9次,初值为n-1,可见先取出准考证最后一个数字,索引号n-9为准考证的第1个数字,range是一个左闭右开的区间,结束位置应为n-10。②code字符串索引号0-9为第一行数字,转换为0;索引号10-17为第2行数字,转换为1;索引号18-26转化为2,可以推导出索引整除9即为转换后的数字。③调用jiexi函数将90个0或1的数字转换成9位准考证号,变量i的初值为n-1,因此转换为逆向的准考证号。(2)每10个二进制数中,只有一个被填涂过,因此只有一个1,变量c表示1的个数,当c为0或大于1时,表示不合法的准考证数字。
11.(1)AB#DC (2)①num=5 ②b=y0+th*row ③s+=ch[col] (3)count>=fw*fh*0.7
解析 本题考查Python程序综合阅读程序能力。(1)依据题目和程序可知答题卡2中第3题没有填涂,用“#”代替,因此答题卡2识别结果是AB#DC。(2)①设定答题卡数量,故该处代码是num=5;第1个for循环row枚举每个选择题,col枚举每个选择题的列(4个选项),变量a存储第row行第col列左上角坐标的横坐标,纵坐标存变量b中,从图b中可知b的表达式为y0+row*th,故②处代码是y0+row*th,有了选项ABCD的左上角坐标,可以调用自定义函数judge()判断该选项是否填涂,③处代码表示该col列被填涂了,输出相应的选项“ABCD”,因变量ch存储常量“ABCD”,同时每题的填涂都要记录,故该处的代码是s+=ch[col];(3)加框处代码是判断区域是否填涂,依据题目要求是:填涂比例超过70%,故该处代码应该是count>=fw*fh*0.7。
12.(1)A (2)A (3)cnt+=1 (4)c=1-c或c=abs(c-1)或(c+1)%2或c=img[i,j]
解析 (1)rows表示行数,cols表示列数,在每一行中遍历每一列,因此是逐行记录。(2)0表示黑色,255表示白色,当img[i,j]>180时为白色,现黑色部分要增多,因此白色区域范围更小。(3)cnt表示连续相同的个数,因此应为计数。(4)c的初值为img[0,0],其值为0或1,统计一个连续相同的点,应对c进行0变1或1变0的转变。

展开更多......

收起↑

资源预览