内容正文:
高效作业10[第10课 函数与模块]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
【A级 新教材落实与巩固】
1.用于随机产生一个[a,b]范围内的实数的函数是( )
A.random.random()
B.random.uniform(a,b)
C.random.randint(a,b)
D.random.choice(seq)
B
2
【解析】 选项A,random.random()用于随机产生一个[0,1)范围内的实数;选项B,random.uniform(a,b)用于随机产生一个[a,b]范围内的实数;选项C,random.randint(a,b)用于随机产生一个[a,b]范围内的整数;选项D,random.choice(seq)用于随机从seq中挑选一个元素。选项B符合题意。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2.导入math模块,执行math.pow(2,5)的结果是( )
A.5 B.10
C.25 D.32
【解析】 math.pow(2,5),得到2的5次方,结果是32。
D
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
3.下列表达式的计算结果和表达式 6*3**2%8//2+1 的结果相同的是( )
A.str(len('2023杭州亚运会')//3)
B.random.randint(3,4)
C.int(3**2/2)
D.632//10%10
C
【解析】 6*3**2%8//2+1的值为4。选项A的值是字符串,不符合题意;选项B的值为[3,4]范围内的随机整数,不符合题意;选项D的值为3,不符合题意。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
4.Python表达式int(math.sqrt(8)+0.5)*3%16//2**2的值是( )
A.2 B.1
C.16 D.9
【解析】 math.sqrt为开根号,int(math.sqrt(8)+0.5)值为3,2**2值为4,则表达式变为3*3%16//4,运算符优先级相同,按从左向右计算,结果为2。选项A正确。
A
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
5.用Python程序处理图像文件flower.jpg,该图像颜色位深度为24bit,图像如右图所示,程序代码如下:
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
img=np.array(Image.open('flower.jpg').convert('L'))
rows,cols=img.shape
for i in range(rows):
下列说法正确的是( )
A.处理后的图像可以呈现128种颜色
B.处理后的图像像素将减小
C.将加框处代码中的“128”改为“50”,则处理后图像中黑色部分将增加
D.将加框处代码中的“>”改为“<=”,则处理后的图像中黑白色将互换
【解析】 选项A,处理后的图像可以呈现2种颜色,选项错误;选项B,像素个数不变,选项错误;选项C,处理后图像中黑色部分将减少,选项错误。
D
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
6.有如下Python 程序段:
import random
fibo=[1]*11
for i in range(2,11):
fibo[i]=fibo[i-1]+fibo[i-2]
n=random.randint(1,10)
print(fibo[n])
执行该程序段后,输出的结果不可能是( )
A.1 B.21
C.35 D.89
【解析】 列表fibo存储的元素值为1,2,3,5,8,13,21,34,55,89,列表中没有35,选项C符合题意。
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
7.有如下Python程序段:
def mysign(s):
count=0
for i in s:
if '0'<=i<='9':
count+=1
return count
x=input('请输入字符串: ')
c=mysign(x)
print(c)
若输入“12345,上山打老虎”,则执行该程序段后,输出的结果是( )
A.5 B.10 C.6 D.11
【解析】 mysign()函数用于计算字符串中数字字符的个数,选项A正确。
A
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
8.有如下Python程序段:
def f(a,b):
if a>b:
return a-b
return a+b
x1=int(input(”请输入第一个数: ”))
x2=int(input(”请输入第二个数: ”))
print(f(f(x1,x2),f(x2,x1)))
若输入12和13,则执行该程序段后,输出的结果是( )
A.重复调用出错 B.50
C.24 D.26
【解析】 x1=12,x2=13,f(12,13)=25,f(13,12)=1,f(25,1)=24,选项C正确。
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
9.2024·江山中学检测有如下Python程序段:
def gcd(a,b):
c=a%b
while c>0:
a,b=b,c
c=a%b
return b
a=int(input(”请输入: ”))
17
b=int(input(”请输入: ”))
gcd=gcd(a,b)
scm=a*b//gcd
print(gcd,scm)
若输入a,b的值分别为16,12,则执行该程序段后,输出gcd,scm的值分别为( )
A.4,48 B.48,4 C.2,12 D.12,2
【解析】 函数的作用是求最大公约数,sum为最小公倍数,选项A正确。
A
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
10.有如下Python程序段:
def count(a,i):
for j in range(i+1,len(a)):
if a[j]<a[j-1]:
return j-i
else:
return len(a)-j
19
a=list(map(int,input().split()))#将输入的字符串按照空格符进行分割后转换为整型列表
b=[1]*len(a)
for i in range(len(a)-1):
b[i]=count(a,i)
print(b)
若输入数据为“1 2 2 4 7 6”,则执行该程序段后,b[1]的值为( )
A.1 B.4 C.3 D.2
B
【解析】 i=1,调用函数count(a,1),函数中j的范围是[2,len(a)-1],j=2时a[2]==a[1],执行return len(a)-j=4,选项B正确。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
【B级 素养形成与评价】
11.2024·定海一中检测对车牌进行识别时先要将彩色图像(如图1所示)二值化,二值化后的图像(如图2所示)只包含白和黑两种颜色。
程序实现代码如下:
from PIL import Image
import matplotlib.pyplot as plt
img=Image.open(”chepai.jpg”).convert(”L”)
图1 图2
pix=img.load()
for row in range(img.width):
for col in range(img.height):
if pix[row,col]>128:
pix[row,col]=0
else:
pix[row,col]=1
plt.imshow(img,cmap=”gray”)
plt.axis(”off”)
plt.show()
下列说法正确的是( )
A.车牌图片的文件名为“车牌.jpg”
B.数值128改成50,图像将呈现黑底白字效果
C.删除 plt.show()语句后图片仍然可以正常显示
D.图像像素的二值化过程是逐列进行的
D
【解析】 选项D,由程序可知,外循环是对图像的宽度进行遍历,内循环是对图像的高度进行遍历,即遍历的过程为第0行第0列,第1行第0列,第2行第0列……第0行第1列,第1行第1列,第2行第1列……,为逐列扫描,选项正确。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
12.针对选考有如下Python 程序段:
def f(x):
if x==1:
return 1
else:
return x *f(x-1)
s=0
for i in range(1,6):
26
s+=f(i)
print(s)
执行该程序段后,变量s的值为( )
A.33 B.34 C.154 D.153
【解析】 通过自定义函数关键代码x*f(x-1)发现该函数的功能是通过递归算法实现x的阶乘。第二个循环是把1到5的阶乘进行累加,1!+2!+3!+4!+5!=1+2+6+24+120=153,选项D正确。
D
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
13.针对选考有如下Python 程序段:
def putx(n):
if n<1:
return
if n%2==1:
print(”*”*n)
else:
print(”#”*n)
putx(n-1)
n=int(input())
putx(n)
若输入5,则执行该程序段后,输出的结果是( )
A
A. B.
C. D.
【解析】 该程序为函数递归调用,第一次调用函数putx(),n=5,执行print(”*”*n),所以先输出5 个*,再执行putx(4);当n=4 时,执行print(”#”*n),输出4 个#,再执行putx(3),以此类推,直到n=0 时退出自定义函数,递归结束。选项A正确。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
14.针对选考2024·湖州中学检测定义如下函数:
def mep(n):
if n==1:
return 1
else:
return (mep(n-1)+1)*2
执行语句t=mep(5),t 的值为( )
A.22 B.23 C.45 D.46
D
【解析】 执行过程如下表所示,选项D正确。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
15.针对选考有如下Python 程序段:
import random
n=random.randint(50,101)
a=[]
for i in range(2,n):
while n%i==0:
a+=[i]
n//=i
print(a)
执行该程序段后,输出的结果可能是( )
A.[3,3,3,3] B.[2,2,9]
C.[55] D.[5,15]
A
【解析】 随机数n 的值域为[50,101],外循环遍历了n 所有可能的因子,当找到n 的因子,将因子连接到列表a 中,同时分解n,不断分解直至不能被整除,则进入大循环取下一个因子。因此,本题在对随机数n 进行质因分解。选项A,3*3*3*3=81,数据在[50,101]范围内,有可能;选项B的9 可以被分解为3*3,且2*2*9=36,数据不在[50,101]范围内,选项错误,同理选项C、D 都未完全分解,选项错误。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
16.有如下Python程序段:
import random
a=[0] *6
for i in range(0,6):
a[i]=random.randint(1,5) *2+1
i=0
while i<5:
if a[i]>a[i+1]:
a[i],a[i+1]=a[i+1],a[i]
else:
a[i]+=1
i+=1
print(a)
执行该程序段后,列表a的值可能是( )
C
A.[1,6,10,10,10,9]
B.[3,8,7,13,3,9]
C.[5,10,7,7,12,11]
D.[5,10,10,7,10,8]
【解析】 列表a中元素的取值范围为3,5,7,9,11。遍历列表a,当前一项大于后一项时,交换;当前一项小于等于后一项时,当前项加1。选项C的初始为9,5,11,7,7,11,选项正确。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
17.有如下Python程序段:
import random
a=[0]*6
a[0]=random.randint(1,5)
i=1
while i<6:
a[i]=a[i-1]+random.randint(1,5)
if i%2==0:
a[i]=a[i]+a[i]%2
else:
a[i]=a[i]//2
i+=1
print(a)
执行该程序段后,输出的值可能是( )
A
A.[2,3,8,6,12,7]
B.[2,1,2,3,3,4]
C.[4,5,6,4,8,6]
D.[6,5,10,7,10,8]
【解析】 列表a是升序。i为偶数时,a[i]为偶数;i为奇数时,a[i]为原来的一半;其中a[0]为1~5之间的整数,选项D排除;选项B,a[1]为1,则原数为2或3,a[2]为2,不符合要求;选项C,a[0]为4,则a[1]最大为9,其一半不可能为5,选项错误。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
18.针对选考2024·路桥中学检测有如下Python程序段:
import random
lst=[0]*8 #定义列表lst,lst[0]~lst[7]初始值均为0
i=0
while i<8:
if i%2==0:
lst[i]=int(random.random()*10)
else:
lst[i]=int(random.randint(1,5))*2+1
i+=1
print(lst)
执行该程序段后,列表lst的值可能是( )
A.[0,10,2,9,8,3,4,5] B.[8,5,4,7,10,3,6,9]
C.[4,11,3,5,9,6,1,7] D.[6,3,1,11,7,3,5,9]
D
【解析】 i为偶数时,lst[i]为0到9之间的整数;i为奇数位,lst[i]为3到11之间的奇数,选项D正确。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
19.针对选考有如下Python 程序段:
def function(k):
sum=1
for i in range(1,k+1):
if k%2==1:
if i%2==1:
sum=sum*i
45
else:
sum+=1
else:
if i%2==0:
sum=sum*i
else:
sum+=1
return sum
k=input(”请输入一个整数: ”)
print(function(int(k)))
执行该程序段后,输出的结果不可能是( )
A.126 B.1
C.2277 D.253
D
i 1 2 3 4 5 6 7 8 9
sum 1 2 6 7 35 36 252 253 2277
i 1 2 3 4 5 6 7 8 9
sum 2 4 5 20 21 126 127 1016 1017
【解析】 以k为奇数为例,列出表格,只看1,3,5,7,9即可。
以k为偶数为例,列出表格,只看2,4,6,8即可。
根据以上例子可知, 253不可能出现,选项D符合题意。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
20.有如下Python程序段:
import random
a=[0]*6
for i in range(6):
a[i]=random.randint(1,5)*2+1
i=0
while i<5:
49
if a[i]>a[i+1]:
a[i],a[i+1]=a[i+1],a[i]
else:
a[i]+=1
i+=1
print(a)
执行该程序段后,列表a 的值可能是( )
C
A.[2,5,10,10,10,9]
B.[3,8,7,13,3,9]
C.[8,12,3,5,3,11]
D.[6,10,9,7,10,8]
【解析】列表a 的各元素的初值范围为[3,5,7,9,11],循环遍历,若当前数大于后一个数,则交换;若当前数不大于后一个数,则当前数+1。所以程序执行后,若该数还是3,5,7,9,11,则该数是与后数交换所得,若该数为4,6,8,10,12,则该数的原数大于后数,是加1 所得。
所以不可能出现2和13,故选项A、B错误。选项D 的第三个数字9不可能出现,故选项D错误。选项C 的原始数可能为[7,11,11,3,5,3],运行代码后可得选项C的结果。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
21.针对选考2024·缙云中学检测有如下Python 程序段:
import random
n=5
data=[i+1 for i in range(n)]
random.shuffle(data) #将序列的所有元素随机排序
print(data)
flag=True;i=0
while i<n-1 and flag:
x=data[i]
for j in range(i+1,n):
if data[j]<data[i]:
if data[j]<x:
x=data[j]
else:
flag=False
break
i+=1
若执行该程序段后flag 的值是True,则输出的 data的值不可能是( )
A.[2,3,4,1,5] B.[4,5,2,3,1]
C.[1,3,2,5,4] D.[1,2,4,3,5]
B
【解析】 根据代码可知,列表data 中元素的初始值是1~5 范围内的随机整数。while 循环实现的功能:若前面的数data[i]比后面的数data[j]大,且data[j]小于x,此时更新x 的值;若data[j]大于或等于x,则将flag 赋值为False,且强行退出。经过模拟可以发现,选项A、C、D 的data 值经过处理后flag的值都为True。选项B,当i=0,j=2 时,此时x 被更新为2,接下去当j=3 时,满足条件data[j]<data[i],但此时data[3]>x,因此flag 被赋值为False,且直接退出循环。因此选项B 中的data 数据,执行程序段后,flag的值一定为False,故选项B 不可能。
感谢聆听,再见!
for j in range(cols):
if :
img[i,j]=1
else:
img[i,j]=0
plt.figure(”flower”)
plt.imshow(img,cmap='gray')
plt.axis('off')
plt.show()
$$