3.2.5函数与模块 课件(共35张PPT) 2023—2024学年高中信息技术浙教版(2019)必修1

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

3.2.5函数与模块 课件(共35张PPT) 2023—2024学年高中信息技术浙教版(2019)必修1

资源简介

(共35张PPT)
3.2.5函数与模块
2
自定义函数
可以复用的代码
函数可分为系统函数和用户自定义函数。
前面使用过的print( )和input( )函数都是系统函数
自定义函数:一般包括函数名、参数、函数体和返回值等四部分。
自定义函数的基本格式是:
def 函数名(参数):
函数体
[return 返回值]
2
自定义函数
可以复用的代码
def 函数名(参数):
函数体
[return 返回值]
函数名:命名规则和变量名一样
参数:即形式参数,简称形参,是调用该函数需要提供的数据;参数是用来向函数传递值的,当有多个参数时,各个参数之间用逗号隔开
函数体:是函数需要执行的具体代码(计算过程)
函数值:函数执行完后,由return语句将表达式值返回给调用者,结束函数。
def Area(a,b,c):
p=(a+b+c)/2
s=(p*(p-a)*(p-b)*(p-c))**0.5
return s
s1=Area(3,4,5)
s2=Area(5,12,13)
print(s1+s2)
完成函数的构造后,在程序中就可以根据需要调用该函数。
def 函数名(参数):
函数体
[return 返回值]
2
自定义函数
可以复用的代码
(1)无参数
def x1():
s=1
for i in range(1,5):
s=s*i
return s
print(x1())
(2)无返回值
def x1():
s=1
for i in range(1,5):
s=s*i
print(x1())
讨论:自定义函数x1的功能以及输出的值。
2
自定义函数
可以复用的代码
(3)有1个参数
(4)有多个参数时,参数间用逗号分隔开。
def x1(n):
s=1
for i in range(1,n+1):
s=s*i
return s
print(x1(4))
print(x1(3)+x1(5))
def x2(h1,h2):
s=h1*h2
return s
print(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)%12
return 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 math
import math as m
语法:
import 模块名
(文具在哪个文具盒,相当于导入的是一个文具盒,是相对路径)
import语句
from-import语句
语法:
from 模块名 import 函数名
(文具盒中哪个文具,是绝对路径)
from 模块名 import *
*是通配符,表示导入文具盒中的全部文具,和import 模块名效果相同。
2
导入模块(库)
4
math 库(模块)
math库中的常用常数函数与函数
名称 含义
math.e 自然常数e
math.pi 圆周率π
math.ceil(x) 对x向上取整,如x=1.2,返回2
math. floor(x) 对x向下取整,如x=1.2,返回1
math.pow(x,y) 指数运算,返回x的y次方(返回值为浮点型)
math.log(x) 对数运算,默认基底为e
math.sin(x)/math.cos(x) 正弦函数/余弦函数
math.tan(x) 正切函数
math.degrees(x) 弧度转换成角度
math.radians(x) 角度转换成弧度
4
math 库(模块)
试试这个:
import math
x=int(input("number:"))
x=math.sqrt(x)
print("square rooting x:",x)
试试这个:
from math import sqrt
x=int(input("number:"))
x=sqrt(x)
print("square rooting x:",x)
输入半径求圆面积
import math
r=float(input("半径: "))
p=math.pi
s=
print("面积是: ",str(s))
4
math 库(模块)
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 math
weight=float(input("请输入快递质量(kg:)"))
if weight<=1:
money=9
elif weight<=3:
money=11
elif weight<=5:
money=14
else:
money=14+2*
print("你需支付的快递运费是:",money,"元")
math.ceil(weight-5)
5
random 库(模块)
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 random
cla=['(2)班','(3)班','(4)班','(5)班','(6)班']
random.shuffle(cla)
for c in cla:
print(c,end=' ')
5
random 库(模块)
random库(模块):用来随机安排出场顺序
import random
xs=["小红","小蓝","小绿","小花","老张","老王","老李","老赵"]
n=int(input("想抽几个人 : "))
print("1 人: ",random.choice(xs))
print(n,"人: ",random.sample(xs,n))
random.shuffle(xs)
for i in xs:
print(i, " ,", end='')
5
random 库(模块)
random库(模块):用来抽奖
5
典例分析【随机点名】
编程:随机点名。同时点名人数由用户输入,当用户输入0时结束程序。
运行如右图所示:
5
典例分析【随机点名】
import random as rd
md=['王佳慈','苏鉴槐','杨金兰','李炳臻','高倩南','段金丽','张叶芳','冯赵祝满','袁杨洋','字叶枫','赵志锋','吴丽娟','余艳','李艳秋','杨佳馨','董璇','杨树宏','冯佳艺','杨漾槐','倪登城','周连琪','许佳雪','马赵琴','段姝慧','段钰','杨礼兵','莽丽洁','和琴艳','陈璞','罗福星','陈绕青','李晓育','毕丽汝','车江栾','李荣','徐苗','史小禾','刘贤','常晓会','苏艳聪','赵波','韩左辉','白承绚','时雪缘']
zrs= len(md)
rs=int(input("输入随机点名人数或输入0退出:"))
while rs!=0:
b=rd.sample(range(zrs),rs)
i=0
while ix=b[i]
print(md[x],end=" ")
i+=1
print("")
rs = int(input("输入随机点名人数或输入0退出:"))
Image模块是PIL库中的重要模块
# 获得图像的文件格式 geshi = img.format
# 获得图像的高和宽 h, w = img.size
# 获得图像的颜色模式 mo = img.mode
# 将图像旋转45度后显示 img.rotate(45).show()
from PIL import Image
im=Image.open('小飞象.jpg') #打开小飞象.jpg图像文件
print(im.format) #获取图像文件格式
print(im.size) #获取图像尺寸大小(以像素为单位表示图像的宽度和高度)
print(im.mode) #获取图像的颜色模式
im.rotate(45).show() #将图像旋转45°后显示
6
Image模块
from PIL import Image
im=Image.open("pil.jpg")
print(im.format)
print(im.size)
print(im.mode)
im.rotate(45).show()
6
Image模块
Image模块是PIL库(Python Imaging Library)中重要的模块
1.下面程序段定义的函数fa用于计算n!,请在划线处填入合适的代码?
def fa(n):
i=1
s=1
while i<=n:
s*=i
i=i+1
a=int(input("请输入整数a的值:"))
print(fa(a))
若输入的值是是5,则输出的结果为
return s
120
随堂练习
2.以下程序段定义的函数reverse能够得到整数n翻转后的数字(例:1234翻转后是4321)。
def reverse(n):
r = 0
while n > 0:
c = n % 10
r = ①
n = ②
return r
a=int(input("请输入整数a的值:"))
print(reverse(a))
①的程序是
②的程序是
若输入的值是是20221106,则输出的结果为
r*10+c
n//10
60112202
1. 局部变量
在一个函数内或者语句块内定义的变量称为局部变量。局部变量的作用域仅限于定义它的函数体或语句块中。
def fun1(a):
x=a+10
……
def fun2(a,b):
x,y=a,b
……
变量的作用域
在所有函数之外定义的变量称为全局变量,它可以在多个函数中被引用。
x = 30
def func():
x = 20
print('x的值是', x)
func()
print('x的值是', x)
2. 全局变量
变量的作用域
x的值是 20
x的值是 30
def myfun(a):
print('a=',a)
return a+1
a=10
print('a=',a)
myfun(5)
print('a=',a)
a=10
a=5
a=10
在函数内定义的变量称为局部变量。
只在函数体内有效
在函数外定义的变量称为全局变量。
跳过困难题
全局变量和局部变量的区别 (简单)
def Area(a,b,c):
p=(a+b+c)/2
s=(p*(p-a)*(p-b)*(p-c))**0.5
return s
地块面积S=Area(3,4,5)+Area(5,12,13)
3
12
13
5
4
要用到两次海伦公式,可用函数简化
能否再定义一个函数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=0
def Area(a,b,c):
p=(a+b+c)/2
s=(p*(p-a)*(p-b)*(p-c))**0.5
return s
print("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.0
s= 36.0
None
s= 0
定义在函数内部的变量是局部变量,只能在其被声明的函数内部访问
定义在函数外的全局变量可以在整个程序范围内访问。
直接调用quad函数,并没有把函数值赋值给外面的s,所以s仍然为0




全局变量和局部变量的区别 (困难)
3.以下程序能实现对输入的数进行取整:
n = input("请输入一个数:")
n = math.floor(float(n))
print(n)
该程序段划线处应填入的代码为
若输入的值是是3.14,则输出的结果为
import math
3
随堂练习
4.下面程序段可以生成10个[1,100]范围内的随机整数(允许重复)存放在列表numbers中:
from random import randint
numbers = []
for i in range(0, 10):
n =
numbers.append(n)
print(numbers)
该程序段划线处应填入的代码为
该程序输出的结果可能为
randint(1, 100)
随堂练习
Thanks

展开更多......

收起↑

资源预览