《5 PPT 模块五学生“画像”系统的函数封装模块 ppt课件.pptx》由会员分享,可在线阅读,更多相关《5 PPT 模块五学生“画像”系统的函数封装模块 ppt课件.pptx(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、5 PPT 模块五学生模块五学生“画像画像”系统的函数封系统的函数封装模块装模块 主讲:啊是大主讲:啊是大主讲主讲模块五模块五 学生学生“画像画像” 系统函数封装模块系统函数封装模块Python 程序设计项目化教程向春枝 张滨燕 丁爱萍 主编2主讲:主讲:XXX模块导读本模块利用函数封装学生“画像”系统各个功能模块。首先介绍函数的概念,如何定义和调用函数,函数的参数和返回值,函数的嵌套调用和递归调用,变量的作用域;然后介绍Python的内置函数和常用标准库函数的使用,如数学计算math库和随机运算random库。通过学习,引导学生分析学生“画像”系统的功能模块,定义函数实现各功能模块,如添加、
2、删除、修改、查找及查看全部学生信息,并利用自定义函数重构系统,实现学生“画像”系统的2.0版本,从而提高系统的可读性和代码的重用性。3模块目标 知识目标知识目标掌握函数的定义和调用掌握函数的参数和返回值的使用理解函数的嵌套和递归调用了解匿名函数的定义和使用理解变量的作用域,了解全局变量和局部变量的使用掌握常用内置函数和标准库函数的使用 技能目标技能目标能够定义学生画像系统中的函数能够正确调用学生画像系统中的函数能够利用函数重构学生画像系统4本章节目录本章节目录 任务一:函数的设计与使用 任务二:常用的内置函数和标准库函数 任务三:使用函数重构学生“画像”系统5任务一:Python函数的设计与使
3、用任务描述通过前面模块的学习,小李和同学们已经掌握了Python的基础语法,常用语句,字符串的操作,列表、元组和字典操作,实现了学生“画像”系统的基本功能,能编写程序实现学生信息的输入、存储、查找、编辑和删除等功能。但是我们发现,目前的程序中存在大量重复的代码,并且所有的代码都放在一段程序中,结构不够清晰,代码的可读性比较差,项目小组成员之间很难做到合理的分工与合作。带着这些问题,我们开始学生“画像” 系统函数封装模块的学习,学习函数的概念、函数的定义和调用、函数的参数、函数的返回值、函数的类型等相关知识和技能。6任务一:Python函数的设计与使用任务实施Q:什么是函数?A:函数是组织好的,
4、可重复使用的,用来实现单一或相关联功能的代码段,它能够应用的模块化和代码的重复利用率。Python提供了很多的常用的内置函数,如我们经常用到的输入函数input()和输出函数print()。除此之外,我们还可以创建自己的函数,也就是自定义函数。为了提高代码的编写效率和重用性,我们把具有独立功能的代码块组织成一个小模块,这就是函数。7在Python中,我们可以定义一个自己想要功能的函数,称之为自定义函数。自定义函数的语法格式如下所示:def 函数名(参数列表): 函数说明 函数体return 表达式8thwas was string example.wow! thwas was really s
5、tringthwas was string example.wow! thwas is really string基于上述格式,我们对函数定义的规则进行说明:(1)函数代码块以def关键字开头,后面是一个空格、函数名和圆括号();(2)函数名的命名规则跟变量的命名规则是一样的,即只能是字母、数字和下划线组成,且不能以数字开头,不能跟关键字重名。(3)函数的参数必须放在圆括号中,实际定义函数时,可以没有参数,也可以有一个或多个参数;(4)函数内容以冒号开始,并且缩进;(5)函数的第一行语句习惯用文档字符串来存放函数说明;(6)return表达式结束函数,可以选择性返回一个值给调用方,不带表达式的
6、return相当于返回None,省略return也认为返回None,即返回空值.91.定义函数10例5-1 定义显示系统主菜单函数def menu():显示系统菜单 print(|-欢迎进入校园大数据学生“画像”系统 v2.0-|) print(|-1.添加学生“画像”数据-|) print(|-2.删除学生“画像”数据-|) print(|-3.修改学生“画像”数据-|) print(|-4.搜索学生“画像”数据-|) print(|-5.显示全部学生“画像”数据信息-|) print(|-6.退出校园大数据学生“画像”系统-|)112. 调用函数函数定义好以后,就相当于有了一段完成特定功能
7、的代码,要想让这些代码执行,需要调用函数。调用函数的方法很简单,通过“函数名函数名()”即可完成调用。#调用显示系统菜单函数menu()12函数的参数形式参数(parameters),简称形参,是指函数定义时的参数。实际参数(arguments),简称实参,是指调用函数时的参数。函数定义时圆括号内是使用逗号分隔开的形式参数列表,一个函数可以没有形式参数但圆括号必须有,表示这是一个函数并且不接收参数。函数调用时向被调用函数传递实参,必须注意,如果函数定义了多个参数,调用函数时,传递的数据必须和定义的参数一一对应。13默认值参数 在定义函数时,如果给参数设置了默认值,这个参数就被称为默认值参数。
8、当调用函数的时候,由于默认值参数在定义时已经被赋值,所以可以忽略,而其他参数必须要传入值的。 如果默认值参数没有传入值,则直接使用默认的值;如果默认值参数传入值,则使用传入的新值代替。 带有默认值的参数必须放在参数列表的最右边,否则程序会报错。14关键参数 关键参数指的是调用函数时的参数传递方式,与函数定义无关。 通过关键参数可以按参数名字传递值,形参顺序可以和实参顺序不一致,但不影响参数值的传递结果。 使用关键参数避免了用户需要牢记参数位置和顺序的麻烦,使得函数的调用和参数传递更加灵活方便。15不定长参数 在定义函数时,如果不能确定参数的个数,可以使用不定长参数。 不定长参数在定义函数时主要
9、有两种形式:*args和*kwargs: *args用来接收任意多个实参并将其存放到元组; *kwargs用来接收类似于关键参数一样显式赋值形式的任意多个实参并将其存放到字典中。16不定长参数 如果在一个函数定义中,几种不同形式的参数如果混合使用,依次顺序应该是: 普通参数 默认参数 *args参数 *kwargs参数说明:默认参数也可以放在*args 参数之后,但在函数调用的时候必须作为关键参数使用,即必须按变量名称调用。17参数传递时的序列解包 调用含有多个形式参数的函数时,实参可以使用列表、元组、集合、字典以及其他可迭代对象,并在实参名称前加一个星号*,Python解释器将自动进行解包,
10、然后传递给多个单变量形参。 如果使用字典作为实参,则默认使用字典的“键”; 如果需要使用字典中的“键值对”作为实参,则需要使用字典的items()方法; 如果需要使用字典的“值”作为实参,则需要使用字典的values()方法, 字典还可以使用两个星号*,把键值对解包成类似于“键=值”形式的关键参数形式。18函数的返回值 所谓“返回值”,就是函数执行完毕后,通过return语句返回给调用者的结果。 return语句表示结束函数的执行,如果没有return语句,或者return语句不返回任何值,Python认为返回None,即返回空值。 如果一个函数用return返回多个值,多个值以元组的形式保存
11、。19函数的四种类型 根据函数有没有参数和返回值,可以分为四种类型: (1)函数无参数,无返回值; (2)函数无参数,有返回值; (3)函数有参数,无返回值; (4)函数有参数,有返回值。20函数的嵌套和递归调用 在一个函数中调用另外一个函数的情况,称之为嵌套调用。 如果一个函数内部调用了函数本身,称之为递归调用,这个函数就是递归函数。21lambda表达式 lambda表达式可以用来声明匿名函数,就是没有函数名称的临时使用的函数。 lambda表达式只可以包含一个表达式,不允许包含其他复杂的语句,但在表达式中可以调用其他函数,并支持默认值参数和关键参数,该表达式的计算结果就是函数的返回值。
12、lambda声明匿名函数的一般形式如下: lambda 参数列表:表达式22变量的作用域 变量起作用的代码范围成为变量的作用域,不同的作用域内同名变量之间互不影响。 在函数内部定义的普通变量只在该函数内起作用,称为局部变量,当函数运行结束后,局部变量会被自动删除而不可访问。 如果想在函数内部修改一个定义在函数外部的变量值,这个变量的作用域必须是全局的,能够同时作用于函数内外,称为全局变量,可以通过global来声明或定义。23任务二常用内置函数和标准库函数任务描述任务描述:除了自定义函数,Python提供了很多的内置函数和标准库函数,还有大量的第三方开发的扩展库,这正是Python语言的特色和
13、精髓所在,我们在进行系统开发时,可以直接使用这些函数实现很多的功能,很多问题都可以得以快速解决。工欲善其事,必先利其器,本任务学习部分常用的内置函数和标准库函数。24内置函数 内置函数指不需导入任何模块就可以直接使用的函数,这些函数封装在内置模块中,并且进行了大量优化,具有非常快的运算速度,推荐优先使用。 Python解释器提供了68个内置函数,这些函数不需要引入库直接使用。25函数函数功能功能abs(x)返回x的绝对值bin(x)将数字x转换为二进制数形式的字符串chr(x)返回整数x所表示的字符divmod(x, y)返回x除以y的商和余数组成的元组filter(function, ite
14、rable)用于过滤掉不符合条件的元素,返回一个迭代器对象,float(x)将x转化为浮点数help(object)返回对象的帮助信息hex(x)将x转化为十六进制数形式的字符串id(object)返回对象的标识(地址)int(x)将x转化为整数len(object)返回对象包含的元素个数,适用于列表、元组、集合、字典、字符串等类型的对象map(function, iterable, )将单参数函数映射到序列中的每个元素,返回map对象。max(seq)返回列表中的最大值min(seq)返回列表中的最小值oct(x)将x转换为八进制数形式的字符串ord(x)返回字符x的Unicode编码pow
15、(x, y)返回x的y次方range(start, end, step)返回一个等差列表形式的range对象,不包括终值reversed(seq)返回逆序后的迭代器对象round(x ,n)返回x的四舍五入值,不指定小数位数则返回整数sorted(seq)返回排序后的列表str(x)将x转换为字符串sum(seq)返回列表中元素的总和值type(object)返回对象的数据类型zip(iterable, .)返回元组形式的zip对象26内置函数range函数:返回的是一个等差数列形式的可迭代对象,函数语法如下: range(stop) 或 range(start, stop, step)map
16、函数:根据提供的函数对指定序列做映射,函数语法如下: map(function, iterable, .)filter函数:对指定的序列执行过滤操作,函数语法如下: filter(function, iterable)zip函数:将可迭代的对象中对应的元素打包成元组,返回包含这些元组的zip对象,函数语法如下: zip(iterable, .)27内置函数序列处理函数len()、max()、min()、sum()、reversed()和sorted()数学相关函数abs()、divmod()、pow()、round()、min()和max()类型转换函数chr()、ord()、float()、
17、int()、bin()、hex()、oct()和str()id()和type() 函数,id()函数用于返回对象的地址;type()函数用于返回对象的类型。dir() 和help()函数dir()函数可以查看指定模块中包含的所有成员或者指定对象类型支持的所有操作;help()函数可以查看制定模块或函数的说明文档。28内置函数 内置函数链接:29Built-in Functionsabs()delattr()hash()memoryview()set()all()dict()help()min()setattr()any()dir()hex()next()slice()ascii()divmod
18、()id()object()sorted()bin()enumerate()input()oct()staticmethod()bool()eval()int()open()str()breakpoint()exec()isinstance()ord()sum()bytearray()filter()issubclass()pow()super()bytes()float()iter()print()tuple()callable()format()len()property()type()chr()frozenset()list()range()vars()classmethod()geta
19、ttr()locals()repr()zip()compile()globals()map()reversed()_import_()complex()hasattr()max()round()30标准库函数利用函数库编程是Python语言的最重要特点,除了内置函数外,Python系统还提供了大量的标准库函数:如数学计算math库,随机运算random库。这些库函数不能直接使用,需要使用时必须用import引用,引用方式如下:import math 或from math import 31math库的使用 数学计算math库中提供了4个数学常数和44个函数,包括对数函数、指数函数、三角函数、误
20、差计算和其他常用的数学函数。 引入math库:import math例5-12 计算圆形和三角形面积。32random库的使用 随机运算random库中提供了9个常用的函数。使用random库的主要目的是生成随机数。 引入random库:import random例5-13 编写程序模拟掷骰子的过程。33datetime库的使用日期和时间的处理是程序中经常用到的功能,Python提供了一个处理日期和时间的标准函数库datetime,它提供了一系列从简单到复杂的日期和时间的处理方法。datetime库以格林威治时间为基础,每天由360024秒精准定义。该库包含两个常量,datetime.MINY
21、EAR和datetime.MAXYEAR,分别表示datetime能表示的最小和最大年,值分别是1和9999。34datetime库的使用 datetime库以类的方式提供多种日期和时间的表达方式。 datetime.date:日期表示类,可以表示年、月、日。 datetime.time:时间表示类,可以表示小时、分钟、秒和毫秒等。 datetime.datetime:日期和时间表示的类,功能覆盖date和time类。 datetime.timedelta:与时间间隔有关的类。 datetime.tzinfo:与时区有关的信息表示类。35datetime库的使用 由于datetime.data
22、time类表达形式最为丰富,我们主要介绍这个类的使用。使用datetime类需要用import引入,引入的方式如下: from datetime import datetime datetime类(datetime.datetime类,以下简称为datetime类)的使用方式是首先创建一个datetime对象,然后通过对象的方法和属性显示时间。36datetime对象的创建 创建datetime对象的方法有: datetime.today() datetime.now(),返回当前日期和时间,精确到微秒 datetime.utcnow(),返回当前日期和时间对应的UTC(世界标准时间),精确到
23、微秒; datetime.datetime(),构造一个datetime对象,格式如下datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0)37datetime的常用属性datetime.min:返回datetime的最小时间对象,datetime(MINYEAR, 1, 1)。datetime.max:返回datetime的最大时间对象,datetime(MAXYEAR, 12, 31, 23, 59, 59, 999999)。datetime.year:返回datetime对象的年份。datetime.mo
24、nth:返回datetime对象的月份。datetime.day:返回datetime对象的日期。datetime.hour:返回datetime对象的小时。datetime.minute:返回datetime对象的分钟。datetime.second:返回datetime对象的秒钟。datetime.microsecond:返回datetime对象的微秒值。38datetime的常用方法datetime.date():以date对象的形式返回datetime对象的日期。datetime.time():以time对象的形式返回datetime对象的时间。datetime.timestamp()
25、:返回datetime对象的时间戳。datetime.weekday():返回datetime对象的星期(0-6)datetime.ctime():返回表示日期时间的字符串。datetime.strftime(format):按指定格式返回表示日期时间的字符串。classmethod datetime.strptime(date_string, format):类的静态方法,按指定的格式返回字符串对应的日期对象。39格式化字符串格式化字符串日期日期/时间时间值范围和实例值范围和实例%Y年份00019999,例如:2019%m月份0112,例如:07%B月名JanuaryDecember,例如:
26、July%b月名缩写JanDec,例如:Jul%d日期0131,例如:27%A星期MondaySunday,例如:Saturday%a星期缩写MonSun,例如:Sat %H小时(24小时制)0024,例如:22%M分钟0059,例如:16%S秒钟0059,例如:26%x日期月/日/年,例如:07/27/2019%X时间时:分:秒,例如:22:16:26strftime()方法的格式化控制符方法的格式化控制符40Datetime库应用案例 例5-14 : 编写程序,输入出生日期,根据出生日期计算年龄 例5-15 : 编写函数,输入身份证号,返回出生日期任务三:利用函数重构学生“画像”系统41
27、任务描述: 在本任务中将重新划分学生画像系统的功能模块,分析系统设计思路,利用函数实现各个模块的功能,定义各个功能实现的函数,如显示菜单函数,接收用户输入选择函数,学生信息输入函数、学生信息输出函数、学生信息查找函数、学生信息修改函数,判断用户是否存在函数等等,并利用函数重构学生画像系统,对系统功能模块进行函数封装,实现学生画像系统的2.0版本。42系统功能分析学生“画像”系统负责管理维护学生的信息,可以适时地更新学生数据。例如,新生入学,可以在系统中录入学生信息。设计一个学生画像系统,要求如下:(1)使用自定义函数,完成系统功能的模块化;(2)学生信息包括:姓名(字符串),学号(字符串),性
28、别(布尔类型),身份证号(字符串),出生日期(datetime类型),电子邮箱(字符串),成绩(字典类型,包括math,english, python三门课程成绩);(3)系统具有的功能:添加、删除、修改、查找和查看学生信息以及退出系统功能。43系统设计思路 显示主菜单,提示用户选择功能操作; 获取用户选择的功能序号; 根据用户的选择,调用不同的函数,执行相应的功能操作;学生画像系统学生画像系统显示主菜单显示主菜单提示用户选择功能操作提示用户选择功能操作添添加加学学生生信信息息删删除除学学生生信信息息修修改改学学生生信信息息查查找找学学生生信信息息查查看看全全部部学学生生信信息息退退出出系系统
29、统功功能能学生学生“画像画像”系统功能模块图系统功能模块图44系统实现步骤导入相关库函数新建字典students_info,用于保存全部学生的信息定义相关数据处理函数定义函数,显示系统主菜单定义添加学生信息的函数定义删除学生信息的函数定义修改学生信息函数定义函数输出一个学生的详细信息定义查找学生信息的函数定义显示全部学生信息的函数定义函数main(),用于控制整个程序的流程调用主函数main(),运行程序45测试运行程序 运行程序,依次测试各功能模块。测试数据参考如下:项目小结项目小结本项目介绍了Python函数的概念,从如何定义函数开始,详细介绍了函数的调用、函数的参数、函数的返回值、函数的类型、函数的嵌套调用和递归调用、变量的作用域、全局变量和局部变量、匿名函数的用法,还介绍了部分内置函数的用法,日期时间函数和随机数函数的用法。通过学习函数的相关知识,在任务三中带领学生重新划分了学生画像系统的功能模块,分析系统设计思路,利用函数实现各个模块的功能,定义各个功能实现的函数,如显示菜单函数,输入学生信息函数、删除学生信息函数、查找学生信息函数、修改学生信息函数,输出全部学生信息函数等,并利用自定义函数重构了学生画像系统,对系统各功能模块进行了函数封装,完成了学生画像系统的2.0版本。46