2025届信息技术一轮复习讲义:专题5 函数和模块

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

2025届信息技术一轮复习讲义:专题5 函数和模块

资源简介

专题5 函数和模块
学业要求 知 识 点 学业水平等级
1.掌握自定义函数的构造和调用方法 2
2.掌握模块的导入方法和常用函数的应用 2
知识点一 自定义函数
【知识梳理】
1.在算法的程序实现过程中,也经常根据具体问题的特点将其分解成若干个________或者借助所用程序设计语言的特性来完成问题的解决。
2.Python主要运用________、________等方式实现模块化程序设计,为算法的程序实现带来极大的便利。
3.定义函数的语法如下:
def函数名(参数集合):
<函数体>
[return________]
4.函数名的命名规则和变量名一样。完成函数的构造后,在程序中就可以根据需要________该函数。
【经典案例】
自定义函数相当于一个小的程序块,函数的参数相当于输入的信息,函数的形参和实参必须一一对应,函数的返回值相当于输出信息。一个函数体内可以有多条return语句,当执行某条返回语句后,结束自定义函数运行,返回主程序。
自定义函数调用的过程分为把实参赋值给形参、运算获得结果、返回运算结果三个步骤。
【例1】 编写一个自定义函数实现判断字符串s是否是回文字符串。
算法思想:采用双指针分别指向首尾字符,若两者相同,依次向中间靠拢。
def hw(s):
i=0
j=len(s)-1
while ①________:
if ②________:
     return False
i+=1
j-=1
return True
s1=input('请输入字符串s:')
t=hw(s1)
if ③________:
print(″字符串″+s1+″是回文字符串!″)
else:
print(″字符串″+s1+″不是回文字符串!″)
思维点拨
明考向 本题自定义函数的应用
精点拨 ①指针i和j分别指向字符串s的首和尾,在两端各取一个字符进行比较,若i==j意味着该字符串长度为奇数,中间位置可以不用比较,若字符串长度为偶数,最后一次比较完后,i将超出j的值。②若两端各取一个字符,取出的字符不相等,返回假。③调用自定义函数,将函数的值赋给t,那么t可能是True或False
听课笔记:____________________________________________________________
______________________________________________________________________
______________________________________________________________________
【变式1】 将k(2<=k<=16)进制数s转换为十进制数n。
算法思想:十进制数345可以表示为3*10^2+4*10^1+5*10^0,每个位上数x表示有x个位权,把所有位上数字与位权的进行累加,得到该数的十进制数大小。实现该自定义函数如下,请将空白处填写完整。
def ktod(s,k):
sn={″A″:10,″B″:11,″C″:12,″D″:13,″E″:14,″F″:15}
ans=0
for i in ①________:
if ″0″<=s[i]<=″9″:
     t=int(s[i])
else:
     ②________
③________
return ans
shu=input(″输入需转换的数:″)
k=int(input(″输入转换数据的进制:″))
n=ktod(shu,k)
print(str(k)+″进制数″+shu+″转换成十进制数后为:″+str(n))
【例2】 多选题评分,评分标准:全部选对得2分,选对但不全的得1分,不选或有选错的得0分。编制的自定义函数如下,其中x表示要判断的答案,y表示标准答案。
选对但不全的答案判定方法为:遍历判断的答案每一个选项,若该选项在标准答案中存在则进行计数count,否则直接退出遍历。根据count的值与判断答案的长度是否相等来决定是选对但不全。
def df(x,y):
if x==y:
①________
else:
count=0
for i in x:
     if i in y:
       count+=1
     else:
       ②________
if ③________:
     ans=0
else:
     ans=1
return ans
da=input(″请你输入你的答案:″)
bzda=″ACD″
n=df(da,bzda)
print(″该题得分为:″+str(n))
思维点拨
明考向 本题考查自定义函数的应用
精点拨 ①要判断的答案x和标准答案y相同,得2分。②遍历判断的答案每一个选项,判断该选项在标准答案中是否存在。若不存在,说明有错选的选项。③若全部选项在标准答案中均能找到,则count的值就是len(x),若有找不到的,就是存在错选的,得0分,若没填涂,也得0分
听课笔记:_____________________________________________________________
______________________________________________________________________
______________________________________________________________________
【变式2】 工作人员手中有人民币100、50、20、10和1元6个币种,输入一个金额n,按最大票面优先兑换的原则,输出相应的人民币及张数。
def dh(je):
rmb=[100,50,20,10,1];ans={}
i=0
while ①________:
if je>=rmb[i]:
     ②________
     je=je%rmb[i]
else:
     ③________
return ans
je=int(input(″请输入兑换的人民币:″))
t=dh(je)
for i in t:
print(″面值为″+str(i)+″数量为:″+str(t[i]))
知识点二 模块的导入和应用
【知识梳理】
1.Python内置模块:数学运算________、生成随机数________、图像________。
2.Python其他模块:用于实现部分操作系统功能(可用于文件、目录等操作)的________,与时间处理有关的________,可实现科学计算、数据可视化的________________,用于多媒体开发和游戏软件开发的________,支持图形处理的________等。
3.在Python中,把一组函数放到一个.py文件里,这个文件就称为________。
4.使用________语句或________语句导入Python内置的模块和来自第三方的模块,将能使用其中的函数,如________和________函数。
【经典案例】
模块是在函数和类的基础上,将一系列相关代码组织到一起的集合体。在Python中,一个模块就是一个扩展名为.py的源程序文件。导入模块一般采用import语句,import语句的语法:import模块名,若只希望导入模块中指定的一部分,可以使用from...import语句,其语法如下:From模块名import函数名。要求掌握模块的导入方法及常见模块的应用,如Random模块,Math模块,Image模块等等。
【例1】 函数random的方法如下表所示:
名称 含义
random.choice(seq) 从序列seq的元素中随机挑选一个元素
random.sample(a,b) 从序列a中随机截取b个长度的子序列
编写程序实现如下功能:随机产生3门不重复的选课科目,输出其对应的选课人数。
import random
subject=['政治','历史','地理','物理','化学','生物','技术']
①________
print(sub)
number={'政治':307,'历史':219,'地理':396,'物理':170,'化学':116,'生物':265,'技术':225}
num=[]
for x in sub:
②________
print(num)
上述程序段中划线处可选的语句为(  )
A.①sub=random.sample(subject,3) ②num.append(number[x])
C.①sub=random.choice(subject,3) ②num.append(number[x])
B.①sub=random.sample(subject) ②num.append(x)
D.①sub=random.choice(subject) ②num.append(x)
思维点拨
明考向 本题考查随机函数及字典的综合应用
精点拨 sample方法从序列a中随机截取b个长度的子序列,而choice方法只能随机挑选一个序列。输出其对应的选课人数,该人数保存在字典number,根据键x取出相应的值
听课笔记:_____________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
【变式1】 有如下Python程序段:
import random
n=5
data=[i+1 for i in range(n)]
random.shuffle(data) #将序列的所有元素随机排序
flag=True;i=0
while ix=data[i]
for j in range(i+1,n):
if data[j]     if data[j]       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]
【例2】 小明用Python语言中对大小为100*100像素的图像“上.jpg”(如图所示)进行简单处理,部分代码如下:
img=Image.open(″上.jpg″)
im=np.array(img.convert(″L″)) #转换成数字矩阵
rows,cols=im.shape
for i in range(rows):
for j in range(cols):
if j%10==0:
     im[i,j]=0
程序执行后的图像效果是(  )
思维点拨
明考向 本题考查图像模块的应用。语句rows,cols=im.shape的功能是读取图像的宽度和高度。外循环是宽度,即按行遍历图像,每读取完一行中所有列,再读取下一行。当是列为10的倍数时,将像素值修改为0,即改为黑色
精点拨 A 当行的值是10的倍数时,将像素置为黑色
B 实现上下(垂直)翻转的效果
C 实现左右(水平)翻转的效果
D 当列的值是10的倍数时,将像素置为黑色
听课笔记:_____________________________________________________________
______________________________________________________________________
______________________________________________________________________
【变式2】 将图形转化为文本。应用Python中的Image模块后,将字母图片文件″OK.jpg″处理成由0,1表达的文本文件“OK.txt”。字母图片如图a所示,运行后文本文件结果如图b所示。
实现该功能的Python程序如下,请完成划线处的程序代码。
from PIL import Image
def judge(R,G,B):
gray=0.299*R+0.587*G+0.114*B
#转成灰度值
color=gray/132
return color
img=Image.open(″OK.jpg″)
pix=img.load()
file=open(①________,″w″) #读写方式打开文本文件
width=img.size[0]
②________
for i in range(height):
line=″″
for j in range(width):
R,G,B=pix[j,i] #根据像素坐标获得该点的RGB值
③________
if color==0:
     line+=″1″
    else:
     line+=″0″
file.write(line) #写入OK.txt文件
file.write(″\\n″)
file.close()
1.有Python的程序代码如下:
def change_c(s):
if ″a″<=s<=″z″:
s=chr(ord(s)-32)
return s
ss=input(″请输入一串英文字母:″)
n=len(ss)
ans=″″
for i in range(n):
c=change_c(ss[i])
ans=c+ans #①
print(ans)
现执行该程序,输入″abcDEF″,下列说法正确的是(  )
A.函数change_c()被调用了3次
B.函数change_c的功能是将小写字母变成大写字母
C.输出的内容为″ABCDEF″
D.将①所在语句改为″ans+=c″程序功能不变
2.有如下Python程序段:
def fibres(n):
a,b=1,1
for i in range(n-1):
a,b=b,a+b
return a
print(fibres(9))执行该程序段,输出显示的结果为(  )
A.21 B.34
C.55 D.89
3.以下Python程序:
def f(list):
m=list[0]
for i in range(1,len(list)):
if ①________:
     m=list[i]
return m
s=[4,5,2,6,5,8]
print(f(s))
执行后,结果为2,横线处的代码为(  )
A.m>list[i] B.mC.m==list[i] D.m!=list[i]
4.某加密算法程序段如下所示:
def jiami(x):
if ″A″<=x<=″Z″:
y=chr(ord(x)+32)
elif ″0″<=x<=″9″:
y=str((int(x)+1)%10)
else:
y=x
return y
mingwen=input(″请输入明文″)
miwen=″″
for x in mingwen:
miwen=miwen+jiami(x)
print(″密文为:″,miwen)
输入“Abc@789”并运行程序,输出结果是(  )
A.abc8910 B.abc@890
C.ABC678 D.aBC@789
5.有如下Python程序段:
def delstr(s,m):
return s[0:m]+s[m+1:]
s=″Welcome″
i=0
while i<=len(s):
s=delstr(s,i)
i+=2
print(s)
执行该程序段后,输出的结果为(  )
A.ecm B.elome
C.elco D.elom
6.体重指数(BMI)计算公式为体重/身高^2(单位:千克/米^2)。高一年级学生各个等级的单项评分表如下表所示:
等级 低体重 正常 超重 肥胖
男生 ≤16.4 16.5~23.2 23.3~26.3 ≥26.4
女生 ≤16.4 16.5~22.7 22.8~25.2 ≥25.3
小王编写了计算BMI指数(四舍五入保留两位小数)和测试评价等级的自定义函数。实现上述功能的Python程序如下,请在划线处填入合适的代码。
def bmi(x,y): #根据体重x,身高y,计算BMI指数,四舍五入保留两位小数
return ①________
def dj(bmi,xb): #根据bmi指数值,分别计算男生和女生的等级。
if bmi<=16.4:
return 1
elif xb==″男″ and bmi<=23.2 or xb==″女″ and bmi<=22.7:
return 2
elif xb==″男″ and bmi<=26.3 or xb==″女″ and bmi<=25.2:
return 3
else:
②________
sg=float(input(″请输入你的身高:″))
tg=float(input(″请输入你的体重:″))
bz={3:″超重″,4:″肥胖″,1:″偏瘦″,2:″标准″}
③________
print(″小王是男生,他的BMI指数为″,zs)
print(″他的体型等级为:″,④________)
7.编写一个自定义函数实现用户的登录,用户最多有3次可以尝试输入用户名和密码的机会。
def login(a,b,u): #在字典u中判断用户名a是否存在,密码b是否正确
if ①________:
if ②________:
     print(″密码不正确″)
     return False
else:
     print(″登录成功″)
     ③________
else:
print(″帐号不正确″)
return False
u={″cgm″:″sd@1″,″cgl″:″&dd5″,″cjm″:″##22sd″,″1bh″:″12sa″,″1js″:″sd22!″} #系统中存在的用户名
trytime=3
while trytime>0: #有3次机会可以输入用户名和密码
user=input(″请输入你的用户名:″)
psd=input(″请输入你的密码:″)
if ④________:
break
else:
print(″你还剩下″,trytime-1,″次机会可以输入密码!″)
⑤________
8.函数random的方法如下表所示:
名称 含义
random.choice(seq) 从序列seq的元素中随机挑选一个元素
random.sample(a,b) 从序列a中随机截取b个长度的子序列
编写程序实现如下功能:随机产生3门不重复的选课科目,输出其对应的选课人数。
import random
subject=['政治','历史','地理','物理','化学','生物','技术']
①________
print(sub)
number={'政治':307,'历史':219,'地理':396,'物理':170,'化学':116,'生物':265,'技术':225}
num=[]
for x in sub:
②________
print(num)
上述程序段中划线处可选的语句为(  )
A.①sub=random.sample(subject,3) ②num.append(number[x])
B.①sub=random.sample(subject) ②num.append(x)
C.①sub=random.choice(subject,3) ②num.append(number[x])
D.①sub=random.choice(subject) ②num.append(x)
9.有如下Python程序段:
from random import randint
s=″Infomation″
for i in range(2):
k=randint(0,2)*2+1 #randint(0,2)随机产生[0,2]之间的整数
s=s[:k]+s[k+1:]
执行该程序段后,变量s的值不可能是(  )
A.″Iomation″ B.″Inmation″
C.″Infation″ D.″Ifoation″
10.英语单词″illustriousness″意思是优秀,有如下Python程序段:
import random
s=″illustriousness″
for i in range(4):
k=random.randint(0,4)*random.randint(0,3)
print(s[k],end=″″)
执行该程序后,输出的结果不可能是(  )
A.uiso B.iiii
C.tree D.siur
11.某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
专题5 函数和模块
知识点一
知识梳理
1.子问题 2.函数 模块 3.函数值 4.调用
经典案例
例1 ①i变式1 ①range(len(s)) ②t=sn[s[i]] ③ans+=t*k**(len(s)-i-1)
解析 本题考查自定义函数的应用。①从表达式s[i]来看,需遍历字符串s的各个位置。②不是数字就是A-F的字母,需在字典sn中取出相应的值。采用按权展开相加的方法,将各个位的数字与位权的乘积进行累加。
例2 ①ans=2 ②break ③count变式2 ①je>0 ②ans[rmb[i]]=je//rmb[i] ③i+=1
解析 本题考查自定义函数的应用。①je表示要兑换的人民币,每兑换相应的币种,要减去相应的金额,当金额为0时结束兑换。②从输出语句来看,字典中存储的人民币的币种和兑换的数量,因此当条件je >=rmb[i]满足时,兑换相应的币种并写入字典中。③若不能兑换,则换一下币种进行兑换。
知识点二
知识梳理
1.Math模块 Random模块 Image模块 2.OS模块 Time模块 Numpy和Matplotlib Pygame模块 tkinter 3.一个模块 4.import from-import Sqrt Random
经典案例
例1 A
变式1 B [本题考查随机数的应用。列表data初始值是1~5间的随机整数。遍历data数据,若data[i]比后面的数data[j]大,更新x的值;若data[j]大于等于x,则将flag的值置为False,结束程序。B选项当i=0,j=2时,此时x被更新为2,接下去当j=3时,满足条件data[j]x,因此flag被赋值为False,且直接退出循环。]
例2 D
变式2 ①″OK.txt″ ②height=img.size[1] ③color=judge(R,G,B)
解析 本题考查Image模块的应用。①中读取文件名″OK.txt″。②中语句width=img.size[0]获取图像宽度,循环中for i in range(height)要求图像的高度。③中未对color赋值,调用自定义函数,返回0或1。
当堂过关检测
1.B [本题考查自定义函数的应用。从代码中可得自定义函数change_c的作用为返回形参s对应的大写字母。而后在执行程序中遍历字符串ss,多次调用自定义函数,并且将每次遍历到的字符经过转换后连接到原有的字符之前(倒序),最后输出。A选项该程序输入的内容为″abcDEF″长度为6,因此自定义函数被调用了6次;B选项正确;C选项最终输出的内容为FEDCBA;D选项将①改为“ans+=c”后结果是顺序输出,与原意不同。]
2.B [语句a,b=b,a+b的作用是a=b,b=a+b。该自定义函数的功能是计算斐波那契数列。从第3项开始的值依次为2,3,5,8,13,21,34。]
3.A [从函数运行结果来看,查找最小值。遍历列表list,若其值比m小,则更新m的值。]
4.B [函数的功能是对字符串每个字符进行加密,如果是大写,转换成对应的小写字母,如果是数字,循环后移一位。其他不变,依次连接在后面。]
5.D [自定义函数的功能:在字符串s中删除索引位置为m的字符。i值依次为0,2,4,6,字符串s的值依次为elcome、elome、elom。]
6.①round(x/y**2,2) ②return 4 ③zs=bmi(tg,sg) ④bz[dj(zs,″男″)]
解析 本题考查自定义函数编写和调用。①处根据体重x,身高y,计算BMI指数,四舍五入保留两位小数。②处指肥胖的情况。③处调用bmi函数,把tg和sg分别传给x和y。④dj函数返回1~4之间的数值,在字典bz中可以查找每个数值代表的文本信息。
7.①a in u ②b!=u[a] ③return True ④login(user,psd) ⑤trytime-=1
解析 本题考查自定义函数编写和调用。①在字典u中判断用户名a是否存在,密码b是否正确,首先判断a是否在字典b中,若存在用户u,则该用户的用户名是键,密码是值u[a],因此②处答案为b!=u[a]。当两者均正确时,需返回True。④处调用login函数,把用户名user和密码psd分别传至自定义函数中。⑤处将改变trytime的值,尝试的次数将减少一次。
8.A [本题考查随机函数及字典的综合应用。sample方法从序列a中随机截取b个长度的子序列,而choice方法只能随机挑选一个序列。输出其对应的选课人数,该人数保存在字典number,根据键x取出相应的值。]
9.B [语句s=s[:k]+s[k+1:]的功能是去除该字符串索引k位置上字符。循环2次,每次产生一个0至5之间的奇数k,接着去除k位字符。A选项″Infomation″→″Ifomation″→″Iomation″,k值均为1。B选项″Infomation″→″Infmation″→″Inmation″,k值依次为3和2,2不可能产生。C选项″Infomation″→″Infmation″→″Infation″,k值均为3。]
10.C [k的值为0至4之间的数乘以0至3之间的数,[0,4]*0值均为0,[0,4]*1值依次为0、1、2、3、4,[0,4]*2值依次为0、2、4、6、8,[0,4]*3值依次为0、3、6、9、12,因此不可能产生5,7,10,11,即字符中不可能包含t。]
11.C [本题考查列表及斐波拉契数列的相关知识。斐波拉契数列:1,1,2,3,5,8,13,21,34,55,89,144…n为该数列第2至第11项中随机一项,不可能为35,选C。]

展开更多......

收起↑

资源预览