资源简介 (共35张PPT)3.2.5函数与模块2自定义函数可以复用的代码函数可分为系统函数和用户自定义函数。前面使用过的print( )和input( )函数都是系统函数自定义函数:一般包括函数名、参数、函数体和返回值等四部分。自定义函数的基本格式是:def 函数名(参数):函数体[return 返回值]2自定义函数可以复用的代码def 函数名(参数):函数体[return 返回值]函数名:命名规则和变量名一样参数:即形式参数,简称形参,是调用该函数需要提供的数据;参数是用来向函数传递值的,当有多个参数时,各个参数之间用逗号隔开函数体:是函数需要执行的具体代码(计算过程)函数值:函数执行完后,由return语句将表达式值返回给调用者,结束函数。def Area(a,b,c):p=(a+b+c)/2s=(p*(p-a)*(p-b)*(p-c))**0.5return ss1=Area(3,4,5)s2=Area(5,12,13)print(s1+s2)完成函数的构造后,在程序中就可以根据需要调用该函数。def 函数名(参数):函数体[return 返回值]2自定义函数可以复用的代码(1)无参数def x1():s=1for i in range(1,5):s=s*ireturn sprint(x1())(2)无返回值def x1():s=1for i in range(1,5):s=s*iprint(x1())讨论:自定义函数x1的功能以及输出的值。2自定义函数可以复用的代码(3)有1个参数(4)有多个参数时,参数间用逗号分隔开。def x1(n):s=1for i in range(1,n+1):s=s*ireturn sprint(x1(4))print(x1(3)+x1(5))def x2(h1,h2):s=h1*h2return sprint(x2(2,3))print(x2(3,4)+x2(5,6))讨论:自定义函数x1、x2的功能以及输出的值。 1、形参:在定义函数阶段定义的参数, 叫形式参数, 简称形参(相当于变量名) 2、实参:再调用函数的阶段传入的值, 叫实际参数, 简称实参(相当于变量值)形参和实参默认形参: 在定义阶段就已经被赋值的,称之为默认参数 特点:意味着在调用阶段可以不赋值默认(行)形参def func(x, y=2):print (x, y)func(3)func(x=3, y=4)如果没有传递实参,则会使用默认参数,当然也可以通过传递实参来替换它的默认值。3典例分析:输入年份输出生肖【编程】输入一个农历年份(>=1900),输出该年对应的生肖,直到输入0结束,运行结果如下所示:请输入农历年份,输入0结束:2004生肖是:猴请输入农历年份,输入0结束:3典例分析:输入年份输出生肖def shengxiao(y):L1=["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]i=(y-1900)%12return L1[i]year=int(input("请输入出生年份,输入0结束:"))while year!=0:print("你的生肖是:",shengxiao(year))year = int(input("请输入出生年份,输入0结束:"))3.2.5函数与模块模块(库)的导入及应用2导入模块(库)可以复用的代码库(模块):Python 的一大特色是其丰富的模块,基本上只要你能想到的常见开发需求,都能找到别人已经实现的库直接使用,或者相关的工具/框架来辅助实现。import 库名import 库名 as 别名1.导入库(模块)2.指定别名:使用简短的别名,让你使用更方便。import mathimport math as m语法:import 模块名(文具在哪个文具盒,相当于导入的是一个文具盒,是相对路径)import语句from-import语句语法:from 模块名 import 函数名(文具盒中哪个文具,是绝对路径)from 模块名 import **是通配符,表示导入文具盒中的全部文具,和import 模块名效果相同。2导入模块(库)4math 库(模块)math库中的常用常数函数与函数名称 含义math.e 自然常数emath.pi 圆周率πmath.ceil(x) 对x向上取整,如x=1.2,返回2math. floor(x) 对x向下取整,如x=1.2,返回1math.pow(x,y) 指数运算,返回x的y次方(返回值为浮点型)math.log(x) 对数运算,默认基底为emath.sin(x)/math.cos(x) 正弦函数/余弦函数math.tan(x) 正切函数math.degrees(x) 弧度转换成角度math.radians(x) 角度转换成弧度4math 库(模块)试试这个:import mathx=int(input("number:"))x=math.sqrt(x)print("square rooting x:",x)试试这个:from math import sqrtx=int(input("number:"))x=sqrt(x)print("square rooting x:",x)输入半径求圆面积import mathr=float(input("半径: "))p=math.pis=print("面积是: ",str(s))4math 库(模块)from math import pi r=float(input("半径: "))s=print("面积是: ",str(s))p*math.pow(r,2)pi*(r**2)4典例分析:【快递收费】快递重量(千克) 快递运费1千克以下(包含1千克) 9元1千克以上3千克以下(包含3千克) 11元3千克以上5千克以下(包含5千克) 14元5千克以上 5千克以内(含5千克)收14元,超过5千克部分,每千克加收2元,不足1千克按1千克计算某快递公司为计算快递运费编写了Python程序,当用户输入快递重量“单位是千克)后,根据快递公司的收费标准,计算出快递运费。快递公司的具体收费标准如下表所示4典例分析:【快递收费】import mathweight=float(input("请输入快递质量(kg:)"))if weight<=1:money=9elif weight<=3:money=11elif weight<=5:money=14else:money=14+2*print("你需支付的快递运费是:",money,"元")math.ceil(weight-5)5random 库(模块)random库(模块):用来生成随机数。random库中的常用函数名称 含义random.random() 随机生成一个【0,1)范围内的实数random.uniform(a,b) 随机生成一个【a,b】范围内的实数random.randint(a,b) 随机生成一个【a,b】范围内的整数random.choice(seq) 从序列的元素中随机挑选一个元素如:random.choice(range(10)),即从0到9中随机挑选一个整数random.sample(seq,k) 从序列中随机挑选k个元素random.shuffle(seq) 将序列的所有元素随机排序import randomcla=['(2)班','(3)班','(4)班','(5)班','(6)班']random.shuffle(cla)for c in cla:print(c,end=' ')5random 库(模块)random库(模块):用来随机安排出场顺序import randomxs=["小红","小蓝","小绿","小花","老张","老王","老李","老赵"]n=int(input("想抽几个人 : "))print("1 人: ",random.choice(xs))print(n,"人: ",random.sample(xs,n))random.shuffle(xs)for i in xs:print(i, " ,", end='')5random 库(模块)random库(模块):用来抽奖5典例分析【随机点名】编程:随机点名。同时点名人数由用户输入,当用户输入0时结束程序。运行如右图所示:5典例分析【随机点名】import random as rdmd=['王佳慈','苏鉴槐','杨金兰','李炳臻','高倩南','段金丽','张叶芳','冯赵祝满','袁杨洋','字叶枫','赵志锋','吴丽娟','余艳','李艳秋','杨佳馨','董璇','杨树宏','冯佳艺','杨漾槐','倪登城','周连琪','许佳雪','马赵琴','段姝慧','段钰','杨礼兵','莽丽洁','和琴艳','陈璞','罗福星','陈绕青','李晓育','毕丽汝','车江栾','李荣','徐苗','史小禾','刘贤','常晓会','苏艳聪','赵波','韩左辉','白承绚','时雪缘']zrs= len(md)rs=int(input("输入随机点名人数或输入0退出:"))while rs!=0:b=rd.sample(range(zrs),rs)i=0while ix=b[i]print(md[x],end=" ")i+=1print("")rs = int(input("输入随机点名人数或输入0退出:"))Image模块是PIL库中的重要模块# 获得图像的文件格式 geshi = img.format# 获得图像的高和宽 h, w = img.size# 获得图像的颜色模式 mo = img.mode# 将图像旋转45度后显示 img.rotate(45).show()from PIL import Imageim=Image.open('小飞象.jpg') #打开小飞象.jpg图像文件print(im.format) #获取图像文件格式print(im.size) #获取图像尺寸大小(以像素为单位表示图像的宽度和高度)print(im.mode) #获取图像的颜色模式im.rotate(45).show() #将图像旋转45°后显示6Image模块from PIL import Imageim=Image.open("pil.jpg")print(im.format)print(im.size)print(im.mode)im.rotate(45).show()6Image模块Image模块是PIL库(Python Imaging Library)中重要的模块1.下面程序段定义的函数fa用于计算n!,请在划线处填入合适的代码?def fa(n):i=1s=1while i<=n:s*=ii=i+1a=int(input("请输入整数a的值:"))print(fa(a))若输入的值是是5,则输出的结果为return s120随堂练习2.以下程序段定义的函数reverse能够得到整数n翻转后的数字(例:1234翻转后是4321)。def reverse(n):r = 0while n > 0:c = n % 10r = ①n = ②return ra=int(input("请输入整数a的值:"))print(reverse(a))①的程序是②的程序是若输入的值是是20221106,则输出的结果为r*10+cn//10601122021. 局部变量在一个函数内或者语句块内定义的变量称为局部变量。局部变量的作用域仅限于定义它的函数体或语句块中。def fun1(a):x=a+10……def fun2(a,b):x,y=a,b……变量的作用域在所有函数之外定义的变量称为全局变量,它可以在多个函数中被引用。x = 30def func():x = 20print('x的值是', x)func()print('x的值是', x)2. 全局变量变量的作用域x的值是 20x的值是 30def myfun(a):print('a=',a)return a+1a=10print('a=',a)myfun(5)print('a=',a)a=10a=5a=10在函数内定义的变量称为局部变量。只在函数体内有效在函数外定义的变量称为全局变量。跳过困难题全局变量和局部变量的区别 (简单)def Area(a,b,c):p=(a+b+c)/2s=(p*(p-a)*(p-b)*(p-c))**0.5return s地块面积S=Area(3,4,5)+Area(5,12,13)3121354要用到两次海伦公式,可用函数简化能否再定义一个函数quad(),输入3,4,5,12,13就能计算地块的面积呢?def quad(a,b,c,d,e):s=Area(a,b,c)+Area(c,d,e)return s调用方法:quad(3,4,5,12,13)在函数体中,可以嵌套使用其他函数全局变量和局部变量的区别 (困难)思考:现在请看整个程序s=0def Area(a,b,c):p=(a+b+c)/2s=(p*(p-a)*(p-b)*(p-c))**0.5return sprint("s=",s)def quad(a,b,c,d,e):s=Area(a,b,c)+Area(c,d,e)print("s=",s)quad(3,4,5,12,13)print(quad(3,4,5,12,13))print("s=",s)已知两个三角形的面积分别为30和6,请小组讨论这段代码的输出结果是什么?答案:s= 36.0s= 36.0Nones= 0定义在函数内部的变量是局部变量,只能在其被声明的函数内部访问定义在函数外的全局变量可以在整个程序范围内访问。直接调用quad函数,并没有把函数值赋值给外面的s,所以s仍然为0①②③④全局变量和局部变量的区别 (困难)3.以下程序能实现对输入的数进行取整:n = input("请输入一个数:")n = math.floor(float(n))print(n)该程序段划线处应填入的代码为若输入的值是是3.14,则输出的结果为import math3随堂练习4.下面程序段可以生成10个[1,100]范围内的随机整数(允许重复)存放在列表numbers中:from random import randintnumbers = []for i in range(0, 10):n =numbers.append(n)print(numbers)该程序段划线处应填入的代码为该程序输出的结果可能为randint(1, 100)随堂练习Thanks 展开更多...... 收起↑ 资源预览