Python程序设计基础 课件 项目五编写基于函数的学生管理模块程序_第1页
Python程序设计基础 课件 项目五编写基于函数的学生管理模块程序_第2页
Python程序设计基础 课件 项目五编写基于函数的学生管理模块程序_第3页
Python程序设计基础 课件 项目五编写基于函数的学生管理模块程序_第4页
Python程序设计基础 课件 项目五编写基于函数的学生管理模块程序_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python程序设计

项目5编写基于函数的

学生成绩管理系统5.1学习目标学习基础知识:函数的定义和调用函数的参数及参数传递变量作用域模块正则表达式

通过学习编写基于函数的学生成绩管理系统这一具体项目,掌握Python中函数的定义与使用的方法,熟悉函数的返回值和函数参数传递的过程、理解函数的嵌套调用与递归调用的定义和使用方法,掌握模块的应用和正则表达式等。5.2基础知识5.2.1函数的定义和调用5.2.2函数的参数5.2.3参数传递5.2.4变量作用域5.2.5模块5.2.6正则表达式5.2.1函数的定义和调用1.函数的定义函数是一段具有特定功能的、可重复使用的代码段。能够分解问题,提高程序的模块化,实现代码的重用。函数的分类系统内置函数:是可以直接使用的函数,如print()函数。标准库函数:须import导入后才能使用。第三方库函数:由Python社区提供,也需要import导入后使用。用户自定义函数:根据程序开发需要自行编写。5.2.1函数的定义和调用1.函数的定义用户自定义函数:【注意】即使该函数不需要接收任何参数,也必须保留一对空的圆括号;括号后面的冒号不能省略;函数体相对于def关键字必须保持一定的空格缩进。5.2.1函数的定义和调用2.函数的调用函数名只能是在调用前定义好的函数的名字。实际参数列表是明确了值的列表,多个实参用逗号“,”分隔,与形式参数列表一一对应,明确的值可以是变量、常量、表达式,甚至是函数。如果实际参数个数少于形式参数的个数,那么形式参数需要设置默认值。5.2.1函数的定义和调用【例】编写两数相乘函数,并调用。运行结果:5.2.1函数的定义和调用3.函数的嵌套Python允许函数嵌套定义,即在函数体内部再定义一个函数。Python允许函数的嵌套调用,即一个函数调用另一个函数时,被调用的函数的函数体内包含了对其它函数的调用。一个复杂的程序经常出现多层的函数调用。5.2.1函数的定义和调用【例】函数嵌套调用。

运行结果:5.2.1函数的定义和调用【例】利用函数递归调用求5!。

运行结果:5.2.2函数的参数1.

位置参数

位置参数,或叫必备参数,调用函数时,实参和形参的顺序须严格一致,并且实参的数量必须和形参的数量相同,否则程序提示错误。

5.2.2函数的参数【例】位置参数调用。

运行结果:5.2.2函数的参数2.关键字参数关键字参数是指调用函数时的参数传递方式,是一种按参数名字传递值的方式。使用关键字参数允许函数调用时参数的顺序与定义时不一致,Python解释器能够用参数名匹配参数值。关键字参数的形式如下:形参名=实参值5.2.2函数的参数【例】关键字参数调用。

运行结果:5.2.2函数的参数3.默认值参数

调用带有默认值参数的函数时,可以不用为设置了默认值的形参进行传值,此时函数将会直接使用函数定义时设置的默认值,也可以通过显式赋值来替换其默认值。在定义带有默认值参数的函数时,默认值参数必须出现在函数形参列表的最右端,否则会提示语法错误。5.2.2函数的参数【例】默认值参数调用。

运行结果:5.2.2函数的参数4.不定长参数

其中,*args用来接收任意多个实参并将其放在一个元组中,**kwargs用来接收类似于关键字参数一样显式赋值形式的多个实参并将其放入字典中。5.2.2函数的参数【例】不定长参数调用。

运行结果:5.2.3参数传递参数传递方式是指实参向形参传递参数的方式,参数传递的实质是形参引用传入实参的名称。包含值传递和引用传递两种方式:值传递:实参的数据类型是固定数据类型(如整数、浮点数、字符串、元组等)。其实质是将实参的值复制一份(副本)传给形参,而实参本身不会因形参是否变化而受到任何影响。引用传递:实参的数据类型是可变对象(列表、字典)。其实质是形参和实参采用相同的引用。如果函数中修改了形参的值时,实参的值将随之发生变化。5.2.3参数传递【例】值传递方式参数传递。

运行结果:5.2.3参数传递【例】可变对象参数传递。

运行结果:5.2.4变量作用域1.局部变量和全局变量局部变量,即定义在函数内的变量,只能在函数内使用。即使函数外具有相同名称的变量,也与其也没有任何关系。不同函数中,可使用相同名字的局部变量,它们代表不同对象,互不干扰。此外,函数的形式参数也属于局部变量,作用范围仅限于函数内部。全局变量是指在函数之外定义的变量。全局变量可以在整个程序范围内有效,但不能在函数体内直接被赋值,否则会报错。5.2.4变量作用域【例】变量的作用域。

运行结果:5.2.4变量作用域2.global和nonlocal关键字global全局变量不能在函数体内直接被赋值。如果程序中定义了全局变量,在函数内部需要使用该全局变量,可在函数定义时,使用global关键字明确声明该变量,经过声明后,函数体内对该变量进行操作后,结果可以反映到函数外。如果程序没有定义全局变量,而是在函数内部直接使用global关键字声明了一个变量为全局变量,那么在调用该函数后,会创建一个新的全局变量。nonlocal如果要在一个嵌套的函数中修改嵌套作用域中的变量,则须使用nonlocal关键字。5.2.4变量作用域【例】global声明变量。

运行结果:

5.2.4变量作用域【例】nonlocal声明变量。

运行结果:

5.2.4变量作用域3.匿名函数可以用lambda关键字创建小型匿名函数,省去了定义函数的过程,减少了函数重名的可能性。匿名函数并非没有名字,只是将函数名作为函数结果返回,其语法格式如下:函数名=lambda[参数列表]:表达式lambda函数冒号前面是函数的参数列表,列表如果有多个参数须用逗号分隔,冒号后面是表达式,表达式的结果就是该匿名函数的返回值。5.2.4变量作用域【例】lambda函数应用。

运行结果:5.2.5模块模块是一个保存了Python程序代码的文件。其名字为模块名加上扩展名.py,一般来说,模块名尽量使用小写字母命名。在模块中,能定义函数、类和变量,也可以包含可执行的代码。程序中通过import导入模块后,可以使用其中的函数和变量。5.2.5模块1.模块的导入模块使用前需要进行导入。导入后方可使用。导入格式如下:5.2.5模块1.模块的导入import语句,其作用是导入整个模块,语法为:导入模块后,必须通过<模块名>.<函数名>来调用模块中的函数。运行结果:5.2.5模块1.模块的导入import…as…,其作用是给模块取别名后导入,语法为:导入模块后,必须通过<别名>.<函数名>来调用模块中的函数。运行结果:5.2.5模块1.模块的导入from…import,其作用是导入需要的指定函数,语法为:导入模块后,直接用<函数名>来调用模块中的函数。运行结果:5.2.5模块2.模块的创建每个Python文件都可以作为一个模块,模块的名字就是文件名。可以自行创建如,创建一个名为compthree.py的文件,其中定义了求三个数中最大值的函数maxthree()。5.2.5模块【例】编写程序,调用自定义模块compthree中的maxthree函数,比较并输出三个数中的最大值。

运行结果:5.2.5模块3.__name__属性__name__属性是模块在创建之初就自动加载的内建变量之一。每个Python模块在运行时都有会一个__name__属性,通过__name__属性可以识别程序的使用方式:当作为模块导入时,则其__name__属性的值将被自动设置为模块名;当作为程序直接运行时,则其__name__属性会被自动设置为字符串“__main__”。5.2.5模块3.__name__属性修改完善compthree.py:单独运行该程序时,运行结果为:再次运行前面程序,结果如下。没有变化,是因为只把compthree作为模块导入,不会输出测试的最大值。5.2.6正则表达式正则表达式,简称为regex,是文本模式的描述方法。例如,\d是一个正则表达式,表示一位数字字符,即任何一位0到9的数字。作为处理字符串的强大工具,正则表达式使用预定义的特定模式去匹配一类具有共同特征的字符串,主要用于快速、准确地完成复杂字符串的查找、替换等。Python中所有正则表达式的函数都在re模块中,使用时需要导入该模块。5.2.6正则表达式1.正则表达式语法正则表达式由元字符及其不同的组合来构成,通过巧妙的构造正则表达式可以匹配任何字符串,并完成复杂的字符串处理任务。表中罗列了一些常见实例。5.2.6正则表达式2.re模块的主要函数(方法)re模块主要用来实现正则表达式的操作。具体使用时,既可以直接使用re模块的方法进行字符串的处理,也可以将模式编译为正则表达式对象,然后使用正则表达式来操作对象。表5-2列出了re模块常用函数(方法)。5.2.6正则表达式2.re模块的主要函数(方法)re模块主要用来实现正则表达式的操作。具体使用时,既可以直接使用re模块的方法进行字符串的处理,也可以将模式编译为正则表达式对象,然后使用正则表达式来操作对象。表中列出了re模块常用函数(方法)。其中,参数pattern为正则表达式,参数string为字符串,参数flags的值可以是re.I(q忽略大小写)、re.M(多行匹配模式)等。5.2.6正则表达式具体使用时,可以直接使用re模块处理字符串,如:importrelanguage='C.Java.Python.SQL'print(re.split('[\.]+',text))运行结果为:['C','Java','Python','SQL']也可以将模式编译为正则表达式对象,然后使用正则表达式对象的方法操作字符串,如:importrelanguage='C.Python.Java.SQL'pattern=pile(r'[a-zA-Z]+')print(re.findall(pattern,language))5.3典型工作项目本阶段是在Python的IDLE开发环境下,在前一个典型工作项目的基础上,通过编写若干个“学生成绩管理系统”程序功能模块对应的函数,实现基于函数的学生管理模块程序功能。通过测试后,提交该程序。

5.3.1需求分析本系统是在前一个典型项目基础上,进一步完善其功能。可以独立设计菜单功能函数和录入、显示等功能函数,用函数替换原有输出语句,优化程序结构,同时为下一步扩展程序功能奠定基础。5.3.2程序设计1.总体设计系统的功能模块对应的函数包括:(1)主界面函数main():显示系统的功能菜单。(2)录入函数insert():录入增加学生成绩信息,写入文件。(3)显示函数show():从文件中读出所有学生成绩信息。(4)查询函数search():从文件中读出指定学生成绩信息。(5)修改函数modify():修改指定学生成绩信息,写入文件。(6)删除函数delete():删除指定学生成绩信息,更新文件。5.3.2程序设计2.主界面设计界面使用简单直观的布局。可以直接利用前一个项目的主界面设计,如图所示。

5.3.2程序设计3.详细设计

(1)录入学生成绩信息函数insert()功能:进入系统主界面后,选择1,调用“录入学生成绩信息”函数。函数内容为提示“系统调用了录入学生成绩模块函数。”。

(2)显示学生成绩信息函数show()功能:进入系统主界面后,选择2,调用“显示学生成绩信息”函数。函数内容为提示“系统调用了显示学生成绩模块函数。”。

(3)查询学生成绩信息函数search()功能:进入系统主界面后,选择3,调用“查询学生成绩信息”函数。函数内容为提示“系统调用了查询学生成绩模块函数。”。5.3.2程序设计3.详

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论