版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单元5函数和类任务5.1定义个人综合所得税计算函数【任务目标】定义一个函数来完成个人综合所得税的计算,然后调用该函数完成表5-1中3名员工的个人综合所得税的计算。【任务实施】……5.1函数定义和调用函数函数的参数嵌套函数递归函数lambda函数5.1.1定义和调用函数关键字def用于定义函数,其基本语法格式如下。其中,参数和返回值都可省略。函数有多个参数时,参数之间用逗号分隔。调用函数的基本语法格式如下。函数的调用必须出现在定义之后。在Python中,函数的本质是对象(function类型实例)。def语句在执行时会创建一个函数对象,函数名是绑定到该函数对象的变量,因此可将函数名赋值给其他变量,使这些变量指向同一个函数对象示例代码如下5.1.2函数的参数定义函数时的参数称为形式参数,简称形参;调用函数时的参数称为实际参数,简称实参。实参可以是常量、变量或表达式,当实参是常量或表达式时,会将常量或表达式的计算结果传递给形参;当实参是变量时,会将对象的引用赋值给形参,使实参和形参指向同一个对象。1.关键字参数默认情况下,调用函数时按形参声明的先后顺序,依次将实参传递给形参。例如,调用add(1,2)时,1传递给a,2传递给b。可通过“形参名=值”的形式将实参传递给形参,此时的实参可称为关键字参数。使用关键字参数时,因为指明了形参名称,所以实参传入的先后顺序已无关紧要。2.参数传递与共享引用当变量作为实参传入函数时,形参和实参会同时指向同一个对象(共享引用)。此时,若在函数中通过形参修改了对象,实参所引用的对象内容也会随之改变,示例代码如下。3.有默认值的可选参数定义函数时,可为参数设置默认值。调用函数时如果未提供实参,则形参取默认值。有默认值的参数为可选参数,在定义函数时,可选参数应放在参数表的末尾,示例代码如下。4.接收任意个数的参数定义函数时,在参数名前面使用“*”,表示可接收任意个数的参数,将其作为一个元组赋值给形参,示例代码如下。5.必须作为关键字参数使用的形参在调用函数时,带“*”的形参之后的形参,只能作为关键字参数,示例代码如下。5.1.3嵌套函数嵌套函数是指在一个函数内部定义另一个函数。嵌套函数只能在定义它的函数的内部使用,示例代码如下。5.1.4递归函数递归函数是指在函数体内调用函数本身的函数。例如,下面的递归函数fac()用于计算阶乘。5.1.5lambda函数lambda函数也称表达式函数或匿名函数,是通过关键字lambda定义的单一表达式函数。它可被赋值给变量,此时变量成为该函数的引用,通过变量名即可调用该函数。定义lambda函数的基本语法格式如下。定义并调用lambda函数的示例代码如下。任务5.2用类处理诗词【任务目标】定义一个类来处理诗词,诗词信息包括标题、类型(唐诗、宋词或元曲)、作者和内容。【任务实施】……5.2类定义和使用类对象的属性派生类关键字class用于定义类,其基本语法格式如下。其中:赋值语句为类定义数据属性,def语句定义的函数是类的方法属性,这两种语句的先后顺序不影响程序运行示例代码class语句在执行时创建一个类对象,类名用于引用该对象。使用类对象可访问类的数据属性和方法属性,也可创建类的实例对象。实例对象拥有类的全部数据属性和方法属性。在定义类时,方法的第1个参数名称通常为“self”,也可以使用其他的名称。在调用方法时,实例对象作为第1个参数被传递给方法,以便在方法中访问实例对象的各种属性。__init__()是类的特殊方法属性——初始化方法,在创建实例对象时调用,用于执行初始化操作。5.2.2对象的属性Python总是在第一次给变量赋值时创建变量。对于类对象和实例对象,当给不存在的属性赋值时,Python为对象创建属性。5.2.3派生类在面向对象编程中,派生类是指从一个已有的类(称为基类或父类)继承而来的类。派生类可以继承父类的属性和方法,同时还可以扩展或修改这些属性和方法,甚至添加新的属性和方法。定义派生类的基本语法格式如下。示例代码【综合实例】用对象处理学生数据编写一个程序,定义一个类来表示学生,包含姓名和年龄信息,定义一个方法将学生信息转换为“姓名,年龄”格式字符串输出。程序运行时输入学生姓名(输入N结束程序)、年龄,若输入的学生姓名已存在,则用新的输入更新学生年龄。在一行输出当前全部学生信息。THANKYOU单元6文件操作任务6.1从文件中读取唐诗目录【任务目标】文件“test6_01.txt”中按下面的格式保存了若干首唐诗。编写一个程序,从上述文件中读取唐诗目录,程序运行结果如下。【任务实施】……6.1文件读写读写文本文件读写CSV文件文件是操作系统管理和存储数据的基本单位。Python使用文件对象来读写文件。通常,文件可分为文本文件和二进制文件。(1)文本文件指以字符编码(如UTF、GBK等)方式保存的文件,字符编码用于将字符集中的字符映射为计算机可以识别的二进制数据,常见字符集有ASCII、GB2312、Unicode等。一个文本文件只能保存其所用字符集包含的字符。Python通常按字节读取文本文件中的字符,一个字符占用的字节数由字符编码定义。(2)二进制文件指以数码0、1形式保存数据的文件(文本文件本质上保存的也是二进制数据),通常所说的二进制文件指用于保存图像、音频和视频等数据的文件。6.1.1读写文本文件open()函数用于打开文件,并返回文件对象,通过该对象可以执行各种文件操作。open()函数的基本语法格式如下。其中:f为引用文件对象的变量;filename为文件名,可包含相对路径或绝对路径,省略文件路径时,Python在当前工作目录中搜索文件;mode为文件读写模式。(1)常用文件读写模式①r:只读模式,默认模式。②w:只写模式,以此模式创建新文件时,若文件已存在,则原来的文件被覆盖。③t:按文本文件格式读写文件数据,默认格式。④b:按二进制文件格式读写文件数据。“t”“b”可与“r”“w”组合使用,常用组合如下。①rt:文本文件格式、只读模式,默认读写模式,等同于“r”。例如,open('data.txt','rt')。②wt:文本文件格式、只写模式,等同于“w”。例如,open('data.txt','wt')。(2)常用文件对象方法①f.close():关闭文件。②f.read():将从文件指针位置开始到文件末尾的字符作为一个字符串返回。③f.read(n):将从文件指针位置开始的n个字符作为一个字符串返回。④f.readline():将从文件指针位置开始到下一个换行符(包括换行符)的字符作为一个字符串返回。⑤f.readlines():将从文件指针位置开始到文件末尾的字符作为一个列表返回,每一行的字符串作为一个列表元素。⑥f.write(xstring):在文件指针位置写入字符串,返回写入的字符个数。⑦f.writelines(xlist):将列表中的数据合并为一个字符串写入文件指针位置,返回写入的字符个数。⑧f.seek(n):将文件指针移动到第n+1个字符,n为0表示文件指针指向文件开头的第1个字符。⑨f.tell():返回文件指针指向的位置。示例代码6.1.2读写CSV文件CSV文件是纯文本文件,通常包含多条记录数据,第1行通常为记录的各个字段名称,从第2行开始为记录数据。每条记录包含相同的字段,字段之间用分隔符分隔。csv模块中的reader和writer对象可用于读写CSV文件示例代码任务6.2学生信息分类【任务目标】文件“studata.csv”中按下面的格式保存了若干学生信息。编写一个程序,从上述文件中读取学生信息,按教学点分别创建文件夹,文件夹中存放当前教学点不同专业的学生信息,每个专业的学生信息放在一个文件中,文件以专业名称命名。【任务实施】……6.2文件管理使用os模块使用shutil模块6.2.1使用os模块os模块提供了许多操作系统接口方法,包括文件和文件夹操作、环境变量访问等1.os.getcwd()os.getcwd()方法返回Python的当前工作目录,示例代码如下。2.os.mkdir()os.mkdir()方法用于创建子目录,示例代码如下。注意:Python对不同操作系统的路径分隔符“\”(Windows系统)和“/”(Unix类系统)做了兼容处理,在解析路径时会自动识别两种路径分隔符,并根据当前运行的操作系统进行转换。由于“\”在Python字符串中是转义字符(如\n表示换行),作为路径分隔符时,需要使用“\\”进行转义。为了减少转义错误,在代码中更推荐使用“/”作为路径分隔符。3.os.rmdir()os.rmdir()方法用于删除指定的空子目录,示例代码如下。注意,os.rmdir()方法只能删除空子目录,删除非空子目录时会出错,示例代码如下。4.os.listdir()os.listdir()方法返回指定目录包含的所有子目录和文件名称,示例代码如下。5.os.chdir()os.chdir()方法用于切换当前工作目录,示例代码如下。6.os.remove()os.remove()方法用于删除指定文件,示例代码如下。7.os.rename()os.rename()方法用于重命名文件,示例代码如下。6.2.2使用shutil模块shutil模块在os模块的基础上提供了更高级的文件和文件夹操作功能,如复制、移动文件等1.复制文件的内容和权限copy(a,b)用于复制文件的内容和权限。其中:a是源文件名,b是目标文件名或文件夹名。当b是文件夹名时,将文件a复制到该文件夹中,文件名不变注意:当函数中的输入路径不完整(如仅输入目录,需补充文件名)时,函数会优先使用操作系统的原生路径分隔符拼接路径,因此输出结果中会体现该分隔符;当函数中的输入路径完整时,无需拼接路径,输出结果中会保留输入中的路径分隔符。此外,与操作系统直接相关的函数(如os.getcwd()),会严格遵循当前系统的原生路径分隔符。示例代码2.复制文件的内容、权限、元数据copy2(a,b)用于复制文件的内容、权限、元数据(包括访问时间、修改时间、作者等),示例代码如下。3.复制文件内容copyfile(a,b)用于将a文件的内容复制到b文件中,a和b必须是文件,不能是文件夹,且b有写入权限,示例代码如下。4.复制文件夹copytree(a,b)用于将文件夹a的全部内容复制到新建的文件夹b中,示例代码如下。如果b已经存在,则程序会出错。5.移动文件和文件夹move(a,b)用于将文件或文件夹a移动到目标文件夹b中,示例代码如下。如果b中存在同名文件或文件夹,则程序会出错。6.删除文件夹rmtree(a)用于删除文件夹a,示例代码如下。7.创建压缩文件make_archive(base_name,format,root_dir,base_dir)用于创建压缩文件。其中:base_name是压缩文件名;format为压缩格式,可以是zip(如果zlib模块可用)、tar、gztar(如果zlib模块可用)、bztar(如果bz2模块可用)或xztar(如果lzma模块可用);root_dir是保存压缩文件的目录,也是被压缩文件或文件夹的根目录;base_dir是被压缩文件的起始目录,也是root_dir下的子文件夹。示例代码8.解压缩文件unpack_archive(filename,extract_dir,format)用于解压缩文件。其中:fi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 关于龙的演讲稿 英文
- 著名西方历史人物演讲稿
- 2025-2026学年宁夏银川某中学七年级(上)期末英语试卷(含答案)
- 2024苏科版八年级数学下册题型专练:频数与频率、频数分布表和频数分布直方图、统计案例:货比三家与初中生的视力情况调查(含答案)
- 2025-2026学年广东省深圳市宝安区八年级(上)期末地理试卷
- 摄影摄像服务技术规范(标准版)
- 2025-2026学年广东省深圳市福田区红岭教育集团九年级(下)开学英语试卷(含答案)
- 2-Butyloctanoic-acid-Standard-生命科学试剂-MCE
- 甘肃警察职业学院《市场营销学》2024 - 2025 学年第一学期期末试卷
- 行为金融学教学课件第某省市场异常
- 2024-2025学年度南京信息职业技术学院单招《职业适应性测试》模拟试题附参考答案详解(轻巧夺冠)
- 上海市经信委课题申报书
- 幼儿园食堂开学安全培训课件
- 2024-2025学年度辽宁经济职业技术学院单招数学试题及答案详解一套
- 高压电工安全培训课件
- 社区食堂社区食堂社区食堂服务特色化方案
- 哈他瑜伽教学课件
- 铲运机司机岗前考核试卷及答案
- 2025年全国初中应用物理创新思维测评八年级初赛试题
- 基于两电平VSC换流器平均值模型的建立与仿真
- 民事起诉状(劳动争议纠纷)样式
评论
0/150
提交评论