5.1.3 函数返回值(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)

2024-08-10
| 31页
| 118人阅读
| 10人下载
普通

内容正文:

任务5.1 函数的定义与调用 名片管理器 各位同学,下面我们来讲解一下函数的定义与调用。 5.1 函数的定义与调用——名片管理器 【任务描述】 名片管理器是一种实用的生活工具,用来帮助管理手机中的各类名片。它需要实现以下功能:名片的添加、名片的删除、名片的修改、名片的查询、获取所有名片信息、系统退出等,其管理界面如图5-1所示。 5.1 函数的定义与调用——名片管理器 【任务分析】 名片管理器的实现需要用到函数的定义和调用。每个功能的实现都需要定义一个函数,可以先设计4个子函数来实现添加名片、删除名片、修改名片信息和显示所有名片的功能;然后定义一个主函数来调用这些子函数,主函数同时要实现系统的退出功能。 5.1 函数的定义与调用——名片管理器 函数及其作用 函数的定义 函数的调用 什么是函数?函数对我们来说其实并不陌生,在前面的章节我们或多或少地使用过函数,只不过它们都是已经定义好的,我们直接调用就可以了。其实函数可以理解为一段功能或者说一段代码的表示。它对应一段可重用的特定的语句组,它是一种功能的抽象,表达特定的含义。在程序设计中,函数通常有两个作用,一个是降低编码的难度,一个是提高代码的重用率。比如一个数学函数ABS(),它用来求实数的绝对值,我们只管拿来用就是了,而不用管它的内部是如何实现的。另外当我们定义了一个函数,在编程中需要用到相关功能,我们可以直接调用函数就可以了,实现代码的复用。下面我们来讲一下如何定义一个函数 5.1 函数的定义与调用——名片管理器 5.1.1 函数的定义与调用 5.1.2 函数参数 5.1.3 函数返回值 5.1.4 变量作用域 5.1.5 任务实现——名片管理器 5.1.3 函数返回值 各位同学,下面我们来讲解一下函数的返回值的作用域 所谓“返回值”,就是在调用函数之后返回给调用者的结果。以下代码定义一个函数,并把值返回给调用者。 5.1.3 函数返回值 def add(a,b): c=a+b return c m=add(2,3) print(m) random: 160 【例5-6】函数返回值。 random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。 (1)无参数、无返回值 无参数、无返回值的函数既不能接收参数,又没有返回值。在一般情况下,打印提示信息等类似的功能,就可以使用这类函数来实现。 5.1.3 函数返回值 def printMenu(): print('---------------------') print('progrnm start') print('program end' ) print('---------------------') printMenu() --------------------- progrnm start program end --------------------- 【例5-7】定义一个无参数、无返回值函数。 random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。 (2)无参数、有返回值 无参数、有返回值的函数不能接收参数,但是可以返回某个数据。在一般情况下,采集数据等功能可以用此类函数实现。 5.1.3 函数返回值 def getTemperature(): #获取温度的一些处理过程 return 24 temperature = getTemperature() print('当前的温度为:%d'%temperature) 当前的温度为:24 【例5-8】定义一个无参数、有返回值的函数。 random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。 (3)有参数、无返回值 有参数、无返回值的函数能接收参数,但不可以返回数据。在一般情况下,对某些变量设置数据而不需要结果时,可以用此类函数实现。 5.1.3 函数返回值 def test(num1,num2): result=num1+num2 print(’两者之和为:%d’%result) test(4,5) 两者之和为:9 【例5-9】定义一个有参数、无返回值的函数。 random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。 (4)有参数、有返回值 有参数、有返回值的函数不仅能接收参数,还能返回某个数据。在一般情况下,用于数据处理并需要结果的应用可以用此类函数实现。 5.1.3 函数返回值 def calculateNum(num): # 计算1~num的累积和 result = 0 i = 1 while i <= num: result = result + i i += 1 return result result = calculateNum(100) print('1~100的累积和为:%d' % result) 1~100的累积和为:5050 【例5-10】定义一个有参数、有返回值的函数。 random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。 5.1.4 变量作用域 各位同学,下面我们来讲解一下函数的返回值的作用域 1.局部变量和全局变量 局部变量是在函数内部定义的变量。在定义函数时,往往需要在函数内部对变量进行定义和赋值。局部变量只能在函数内部使用,如果超出使用范围(函数外部),则会报错。 5.1.4 变量作用域 A = 100 # 全局变量一般用大写字母表示 def func(): a = 50 # 局部变量一般用小写字母表示 print(a+A) func() 150 【例5-11】局部变量的使用。 random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。 全局变量指的是能作用于函数内部和外部的变量,即全局变量既可以在各个函数的外部使用,又可以在各个函数的内部使用 5.1.4 变量作用域 a =3 def f3(v2): return a+1 #外部的全局变量在函数内部使用 print(f3(1)) 4 【例5-12】局部变量的使用。 【例5-12】在函数内部使用了全局变量a。如果全局变量的名字和局部变量的名字相同,那么使用的是局部变量。以下代码演示在局部变量和全局变量名字相同的情况下变量的使用。 random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。 全局变量指的是能作用于函数内部和外部的变量,即全局变量既可以在各个函数的外部使用,又可以在各个函数的内部使用 5.1.4 变量作用域 a =3 def f3(v2): return a+1 #外部的全局变量在函数内部使用 print(f3(1)) 4 【例5-12】局部变量的使用。 【例5-12】在函数内部使用了全局变量a。如果全局变量的名字和局部变量的名字相同,那么使用的是局部变量。以下代码演示在局部变量和全局变量名字相同的情况下变量的使用。 random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。 5.1.4 变量作用域 sum =5 def f2(v2): sum =0 while v2 < 10: sum += v2 #这里sum使用的是局部变量的初始值0,而不是全局sum=5 v2 += 1 return sum print(sum) print(f2(0)) 5 45 【例5-13】在局部变量与全局变量名字相同时变量的使用。 从【例5-13】可知,在全局变量和局部变量名字相同的情况下,函数访问的是局部变量 random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。 5.1.4 变量作用域 注意: 1.全局变量可以在这整个程序范围内访问。 2.如果出现全局变量和局部变量名字相同的情况则访问的是局部变量。 3.全局变量不能在函数体内直接被赋值否则就会报错。 random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。 2.global和nonlocal关键字 使用global关键字可以将局部范围内(如函数)的局部变量提升为全局变量。 5.1.4 变量作用域 b2 = 22 #全局变量 def fun(): global b2 print(b2) b2 = 99 #将全局变量重新赋值 print(b2) fun() print(b2) 22 99 99 【例5-14】global关键字的使用。 random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。 使用nonlocal关键字可以修改嵌套的上级函数作用域中的变量。 5.1.4 变量作用域 def outer(): num = 10 def inner(): nonlocal num num = 100 print(num) inner() print(num) outer() 100 100 【例5-15】global关键字的使用。 在【例5-15】中,上级函数有一个变量num,其初始值为10。函数inner()嵌套在outer()中,通过nonlocal关键字定义num,设置其初始值为100,并打印。通过调用outer()函数,上级函数中的变量num由10变为了100。 random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。 5.1.4 变量作用域 即学即答: 执行以下代码后,结果是( )。 A.5 B.3 C.2 D.1 def fun(): global a a += 2a = 1fun() print(a) 5.1.5 任务实现——名片管理器 同学们,这一节,我们结合章节一开始提出的任务,讲解如何用函数来实现名片管理器。 5.1 函数的定义与调用——名片管理器 【任务描述】 名片管理器是一种实用的生活工具,用来帮助管理手机中的各类名片。它需要实现以下功能:名片的添加、名片的删除、名片的修改、名片的查询、获取所有名片信息、系统退出等。 5.1 函数的定义与调用——名片管理器 【任务分析】 以上功能的实现,需要先为每个功能定义一个函数,共5个子函数,分别是添加名片、删除名片、修改名片信息、获取名片信息、退出管理器;然后定义一个主函数来调用这些子函数,主函数同时要实现系统的退出功能。 5.1.5 任务实现——名片管理器 ------------------------------------------------------------------------------- 名片管理系统V1.0 1. 添加名片 2. 删除名片 3. 修改名片 4. 获取名片信息 5. 退出管理器 ――――――――――――――――――― 名片管理器界面 名片管理器是一种生活实用工具,这是它的管理界面,用来帮助管理手机中的各类名片。它需要实现以下功能:名片的添加、名片的删除、名片的修改、名片的查询、获取所有名片信息、系统退出等。 (1)定义列表 #用来保存名片的所有信息 carInfos=[] 【例5-16】任务实现:名片管理器。 5.1.5 任务实现——名片管理器 首先我们需要定义一个列表carInfos,该列表用来保存名片的信息。添加名片,删除名片,修改名片等操作都是通过对该列表的操作来实现的 。接下来我们根据功能分别来定义子函数。 (1)定义列表 #用来保存名片的所有信息 carInfos=[] 【例5-16】任务实现:名片管理器。 5.1.5 任务实现——名片管理器 首先我们需要定义一个列表carInfos,该列表用来保存名片的信息。添加名片,删除名片,修改名片等操作都是通过对该列表的操作来实现的 。接下来我们根据功能分别来定义子函数。 (2)定义printMenu() #打印功能提示 def printMenu(): print("="*30) print(" 名牌管理系统V1.0 ") print("1.添加名片") print("2.删除名片") print("3.修改名片信息") print("4.显示所有名片") print("5.退出系统") print("="*30) ------------------------------------------------------------ 名片管理系统V1.0 1. 添加名片 2. 删除名片 3. 修改名片 4. 获取名片信息 5. 退出管理器 ―――――――――――――――――――― 5.1.5 任务实现——名片管理器 除了功能子函数外,我们还需要定义一个界面函数。该函数会打印系统的界面,同时进行功能提示。单独运行的效果就是我们刚刚看到的界面。 (3)定义添加名片函数 #添加一张名片信息 def addCarInfo(): # 提示并获取姓名 newName = input("请输入名片姓名:") # 提示并获取性别 newSex = input("请输入人员性别:(男/女)") # 提示并获取手机号码 newPhone = input("请输入手机号码:") newInfo = {} newInfo['name'] = newName newInfo['sex'] = newSex newInfo['phone'] = newPhone carInfos.append(newInfo) 5.1.5 任务实现——名片管理器 除了功能子函数外,我们还需要定义一个界面函数。该函数会打印系统的界面,同时进行功能提示。单独运行的效果就是我们刚刚看到的界面。 (4)定义修改名片信息函数 #修改名片的信息 def modifyCarInfo(): carId=int(input("请输入要修改的名片序号:")) newName = input("请输入新的名字:") newSex = input("请输入新的性别:(男/女)") newPhone = input("请输入新的手机号码:") carInfos[carId - 1]['name'] = newName carInfos[carId - 1]['sex'] = newSex carInfos[carId - 1]['phone'] = newPhone 5.1.5 任务实现——名片管理器 除了功能子函数外,我们还需要定义一个界面函数。该函数会打印系统的界面,同时进行功能提示。单独运行的效果就是我们刚刚看到的界面。 (5)定义显示所有名片信息的函数 # 定义一个显示所有名片信息的函数 def showCarInfo(): print("=" * 30) print("名片信息如下:") print("=" * 30) print("序号 姓名 性别 手机号码") i = 1 for tempInfo in carInfos: print("%d %s %s %s" % (i, tempInfo['name'],tempInfo['sex'], tempInfo['phone'])) i += 1 5.1.5 任务实现——名片管理器 除了功能子函数外,我们还需要定义一个界面函数。该函数会打印系统的界面,同时进行功能提示。单独运行的效果就是我们刚刚看到的界面。 (6)定义主函数并调用它 def main(): while True: printMenu() key = input("请输入功能对应的数字") if key == '1': addCarInfo() elif key == '3': modifyCarInfo() elif key == '4': showCarInfo() elif key==’5’ break else: print(“输入有误”) main() 5.1.5 任务实现——名片管理器 除了功能子函数外,我们还需要定义一个界面函数。该函数会打印系统的界面,同时进行功能提示。单独运行的效果就是我们刚刚看到的界面。 $$

资源预览图

5.1.3 函数返回值(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
1
5.1.3 函数返回值(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
2
5.1.3 函数返回值(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
3
5.1.3 函数返回值(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
4
5.1.3 函数返回值(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
5
5.1.3 函数返回值(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
6
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。