版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python程序设计工作手册式教材
教案
专业名称:______________________
课程名称:Python程序设计
任课班级:______________________
教师姓名:______________________
同
取输______________________
课W:64___________
使用教材:Bto程序设计工作手册式教材
情景三优化程序的性能
教学课题函数序1
课时2教学手段多媒体、板书、实训室
教学方法讲授法、演示法、案例法
教学课型□理论□实训日一体化口(其它)
能力目标:能够根据实际需求编写自定义函数,并通过调用该函数实现
具体功能。
教学目标
知识目标:了解函数的功能和特点、函数参数及调用方法。
素质目标:接受新知识、自主学习的能力。
教学重点编写自定义函数
教学难点函数参数
教学过程设计备注
一、复习上一节上课内容并引出本节上课内容
在上一节中我们巳经学习学生信息管理系统,掌握了使用流程
控制语句对不同数据类型进行存储、追加、查询、修改和删除等常见
操作。但是同学们发现了吗?很多操作过程的代码非常类似,我们完
成可能将这些类似的代码定义在一个函数中,需要使用的时候直接
调用就可以了,既减小程序的长度,同时又提高代码可重用性。
二、教学内容
1、函数的定义
在实际开发中,如果想把一段功能独立的代码进行封装,我们就
可以在这段代码的上方,先写上def关键字(def这个关键字是英文
单词define的缩写,它的中文含义就是定义),def之后先空格,然
后再给你这段代码取个名字。在这里,友情提示一下,我们函数是对
功能的封装,取的这人名字,最好能表达函数所要实现的功能,这样
更加方便记忆和调用,所以函数名最好是能见名知意。
函数名的后边紧跟的是一对小括号或者叫圆括号,圆括号的后
面再紧跟一个重要的冒号。这一行,称为函数头部的定义,函数头部
定义的四个元素的顺序一定要记牢:首先是关键字def,然后空格再
是函数名,函数名后紧跟一对圆括号,圆括后紧跟一个冒号。
冒号后一定要换行缩进再定义函数体。函数体内就是我们要封
装的函数功能代码。注意函数体内的代码都要以关键字def为参照进
行缩进。这就是函数定义的语法格式,一句话讲:函数的定义分为函
数头部的定义和函数体的定义。
2、函数调用
函数的定义实现了函数的功能,函数定义好了,我们需要的这种
特殊的积木也就造好了。如果不用放在哪也就只是摆设,怎么将其用
起来,堆砌自己的Python程序呢?那就是我们要介绍的第二个问题,
即函数调用。函数调月很简单.,通过函数名和它言边那对圆括号,便
可完成,后边那对圆括号叫形参表。我们先来看一个简单的案例:假
如,我们要编写一个say_hello的函数,封装三行打招呼的代码,并
在函数下方调用打招呼的代码。
首先,我们写上关键字def,然后空格写上函数名say_hello,
say_hello后面紧跟一对圆括号,圆括号后紧跟一个冒号,这就是函
数头部定义的四要素,代码如下所示。
defsay_hcllo():
printCHello!,1)
print("Howareyou!")
print("Goodmorning!")
3、形参
形参是指定义函数时,圆括号中的参数,形参是用来接收实参的
值的,它只能在函数内部作为变量使用。在定义函数头部时,圆括号
中便可以列举出需要用到的形参的名称,多个形参之间用逗号分隔。
例如,定义一个求两数之和的函数,代码可以编写为:
defsum(numl,num2):
result=numl+num2
print(result)
形参的作用有两个:一是告诉外部把值传到我这里来,二是在函
数内部当作变量运算。
4、实参
实参是指调用函数时,圆括号中的参数,实参用来存放数据并将
数据传递给形参。在程序中一般把需要传递给函数的数据依次列举
在实参表里,以逗号隔开。刚才定义的求和的sum()函数调用时,如
果是将12和5两数求和,可以将被加数12和加数5的值写进实参
表,形式为:sum(12,5)o实参的作用只有一个:把数据传递给形参,
代码如下。
情景三优化程序的性能
主题面向对象程序设计序号2
课时2教学手段多媒体、板书、实训室
教学方法讲授法、演示法、案例法
教学课型□理论□实训日一体化□(其它)
能力日标:能够使用封装技术隐藏学生类中的属性和方法,并间接对
其进行访问;能够熟练掌握单继承和多继承的,提高了代码的可重用
教学目标性。
知识目标:了解对象的概念以及如何创建和使用对象。
素质目标:接受新知识、自主学习的能力。
教学重点类的定义、对象的创建与使用
教学难点多态
教学过程设计备注
一、复习上一节上课内容并引出本节上课内容
在上一节中我们已经学习了函数,掌握了函数的定义和调用的方法,
并且通过综合实训的引导,能够熟练运用多种方法编写函数来解决实际
问题。如果需要编写的程序非常复杂,可以将其分解为多个函数,由团队
成员分工协作一同来完成;函数也需要合作,合作才能共赢。
本次课我们来学习论面向对象程序设计。
二、教学内容
1、对象的引入
对象(object)是一种数据抽象或数据结构抽象,用来表示程序中需
要处理或已处理的信息。
Python从设计之初就是一门面向对象的语言,它有一个重要的概念,
即一切皆对象。数字、字符串、元组、列表、字典、函数、方法、类、模
块等等都是对象。
将对象的特征用状态和行为来表示,状态就是静态属性,主要指对象
包含的各种信息,如学号、姓名、性别、籍贯等;行为就是动态属性,表
示对象所具有的功能和操作,如学习、吃饭、体育锻炼等。
2、类的定义
如果把一个个学生对象归到一个集合,这就形成了类。类就如同模
具,有了类这个模具,就可以很方便地创建对象了。在Python中,要创
建一个个的对象,就要先创建模具,也就是先创建一个类。
在Python的世界中也是同样道理,要创建一个个的对象,就要先创
建模具,也是先创建一个类。那如何定义类呢?使用关键字class来表示
类,后面加空格再写类名,类名后同样需要紧跟一个重要的冒号,即class
类名:,在定义类时,类名要遵循大驼峰命名法。这一行,称为类的头部
的定义,当类头部定义完后,就是类体的定义了。
类体的定义必须换行并缩进对齐。类体中是类的成员,包括两个部
分:成员变量和成员方法。
成员变量即状态,用于描述类的状态属性和特征。
成员方法即行为,用于定义类所要进行的操作。比如定义一个汽车
类,它的成员变量有:品牌、型号、颜色、价格;它的成员方法有:行驶;
参考代码如下。
classCar:
brand士长城,
type='H6"
color='黑色’
price=420000,
defdrive(self):
print('Icanrun')
3、对象的创建与使用
汽车类创建完成以后,怎么通过汽车类来创建对象呢?这一步非常
简单,可以使用对象名=类名()来完成,此时我们要创建一个carl对
象名,则直接通过carl=Car。来完成对象的创建。
对象创建以后,该对象如何使用呢?通常使用对象名•成员变量名和
对象名.方法名(参数列表),来访问成员变量和成员方法,参考代码如
下。
carl=Car()#创建carl对象
car1.brand='长安,#访问成员变量
carl,type-CS75#调用成员方法
carl.drive()
4、封装
封装(Encapsulation)是对具体对象的一种抽象,即将某些部分隐藏
起来,在程序外部看不到,其含义是其他程序无法调用。要了解封装,离
不开“私有化”,就是将类或者是函数中的某些属性限制在某个区域之内,
外部无法调用。
在类中把某些属性和方法隐藏起来(或者说定义成私有的),只在类的
内部使用、外部无法访问,或者留下少量接口(函数)供外部访问。Python
中私有化的方法也比较简单,即在准备私有化的属性和方法名字前面加
两个下划线(_)即兀。
学生类Student中成员变量年龄age和性别gender私有化;同时将成
员方法学习study()封装起来,参考代码如下。
classStudent:
name='张三,
_age=18
—gender廿男'
def_study(self):
prime努力学习)
defcat(sclf)-
prime认真吃饭)
defsleep(self):
printC好好休息)
5、继承
在Python中一切皆对象,这些对象都是类的实例。这么多的类,每
个类都是从头开始创建的吗?比如我要给小猫创建一个类,再给小狗创
建一个类、还要给小猪创建一个类;每个类的代码都要打一遍,会不会太
繁琐了呀,有什么方法能够提高编程的效率呢?小猫、小狗、小猪它们
是完全不一样的吗?当然不是啦。它们也是有一些共同之处,比如都有两
个眼睛、两个耳朵、四条腿,都能发出声音;我们可以利用它们的共通点,
首先创建一个动物Animal类,然后根据动物Animal类分别创建小猫子
类、小狗子类和小猪子类,此时这三个子类无需编码便可以拥有动物
Animal类的方法和属性,这就是继承,这也是面向对象语言的一个重要
特征。
继承是指将一个具有广泛意义的类定义为父类(又称为基类或超
类),新建的类可以继承一个或者多个父类,新建的类称为子类(派生类)。
子类的创建语法格式如下。
class子类名(父类名):
成员变量的定义(新增或修改)
成员方法的定义(新增或修改)
创建一个动物类Animal,该类具有吃、喝、跑、睡4个方法,参考
代码如下。
classAnimal:
defeat(self):
print('吃'end=")
defdrink(self):
print('喝',end=")
defrun(self):
print(胞,end=")
defsleep(self):
prinlC睡)
再创建一个猫类Cat,让它继承动物类,品种为狸花猫,并且新增一
个捉老鼠的方法;再创建一个狗类Dog,让它继承动物类,品种为中华田
园犬,并且新增一个覆家护院的方法;参考代码如下。
classCat(Animal):
breed='狸花猫'
defwork(self):
prin《捉老鼠)
classDog(Animal):
breeds中华田园犬,
defwork(self):
print,看家护院)
6、多态
在python中,多态是指不同的子类对象调用相同的父类方法,产生
不同的执行结果。多态一般指一类事物多种形态,同时一个类有多个子
类,因而多态的概念依赖于继承。
实现多态的两个前提:一是要有继承(多态必须发生在父类和子类之
间);一是子类必须重写父类的方法。现在我们继续使用1.3.2单继承的
案例来讲解多态的知识点,首先定义一个Animal父类,在该类中写一个
who方法;再写两个子类Cat和Dog继承Animal类,并且每个子类都重
写父类的who方法,输出该子类动物的名字二参考代码如下。
classAnimal:
defwho(self):
prin(我是小动物)
classCat(Animal):
defwho(self):
printC我是狸花猫)
defwork(self):
print。捉老鼠)
classDog(Animal):
defwho(self):
printC我是中华田园犬)
defwork(self):
prime看家护院)
al二Animal。
cl=Cat()
dl=Dog()
al.who()
cl.who()
dl.whoQ
三、总结
通过本次任务的学习和实践,使我们了解了面向对象程序设计的特
征和优势,掌握了类的定义、对象的创建和使用;同时能够熟练完成封装、
继承和多态的程序设计和编码。封装增加了代码的安全性、继承提高了代
码的可重用性、多态增强了代码的灵活度和可扩展性。
作业布置多态显示动物名称
教学反思
情景三优化程序的性能
主题异常处理序号3
课时2教学手段多媒体、板书、实训室
教学方法讲授法、演示法、案例法
教学课型口理论。实训日一体化口(其它)
能力目标:能够根据实际情况灵活运用异常处理的四种结构形式来
增强程序的稳定性和健壮性;能够熟练捕获错误类型并完善出现错
误的处理方法,使程序尽量不会抛出异常,而是给出一个友好的提示
教学目标
信息。
知识目标:了解异常的概念和功能、常见异常名称及描述。
素质目标:接受新知识、自主学习的能力。
教学重点捕获异常
教学难点常见异名称与描述
教学过程设计备注
一、复习上一节上课内容并引出本节上课内容
上一讲中我们了解了面向对象程序设计,封装增加了代码的安全
性、继承提高了代码的可重用性、多态增强了代码的灵活度和可扩展性。
同学们都知道:如果程序在执行过程中出现问题,通常会中止执行后报
错;怎样才能够让程序在出错的情况下更加友好的输出呢?这就是今天
我们要学习的异常处理了。
二、教学内容
1、异常的概念
当我们在写Python代码的时候,或多或少都会遇到代码错误或者
异常的情况,那异常与错误有什么区别呢?异常是指不完整、不合法输
入,或者计算出现错误(但这时的语法和逻辑是正确的);错误是指代
码不符合解释器或者编译器语法要求。
当程序运行时,如果Python解释器遇到一个错误,会停止程序的
执行并且提示一些错误信息,这就是异常。通常将程序停止执行并且提
示错误信息这个动作称之为:抛出异常。在程序开发时,很难把所有的
特殊情况都处理的面面俱到,通过异常捕获可以针对突发事件做集中的
处理,从而保证程序的稳定性和健壮性。
2、捕获异常
在程序开发中,如果对某些代码的执行不确定是否正确,可以增加
try来捕获反常工捕获异常的语法格式如下:
try:
尝试执行的代码
except:
出现错误的处理方法
try:尝试,下方编写要尝试的代码,不确定是否能正常执行的代码;
except:如果不是,下方编写尝试失败的代码。
3、常见异名称与描述
序号异常名称描述
1AttributeError对象没有这个属性
2EOFError没有内建输入,到达EOF标记
3IndexError序列中没有该索引(index)
4ImportError导入模块/对象失败
5lOError输入/输出操作失败
6KeyError映射中没有该键
7LookupError无效数据查询的基类
8NameError未声明/初始化对象(没有属性)
9OSError操作系统错误
10SyntaxErrorPython语法错误
11TypeError对类型无效的操作
12TabErrorTab和空格混用
13ValueError传入的参数无效
14WindowsError系统调用失败
15UnicodeErrorUnicode相关的错误
16ZeroDivisionError除(或取模)零(所有数据类型)
4、判断输入年份是否为闰年
从键盘输入任意整数年份year,通过程序运行判断该年份是否为
闰年,如果为闰年,则输出“year是闰年”,否则输出“year不是闰年”。
闰年分为普通闰年和世纪闰年,其判断方法为:公历年份是4的倍数,
且不是100的倍数,为普通闰年;公历年份是整百数,且必须是400的
倍数是世纪闰年。所以通常说:“四年一闰、百年不闰、四百年再闰”。
首先编写第二个版本vl.O,宽成基本功能的要求,参考代码如下。
year=int(inputC请输入一个整数年份:))
if((year%4==0andyear%1()()!=())or(year%400==())):
print('{}是闰是.format(year))
else:
print(,{}不是闰年〔format(year))
以上代码运行后,虽然能够判断输入年份是否为闰年,但是程序只
能运行一次判断一次,无法实现多个年龄的判断,所以我们要将其进行
升级,编写第二个版本v2.0实现一次运行,多次判断。(按任意键继续
判,按n或N键退出程序)
flag=True
whilc(flag):
year=int(inputC请输入一个整数年份:,))
if((year%4==0andyear%100!=0)or(year%400==0)):
print('{}是闰年'.format(year))
else:
print(1}不是闰年〔format(year))
action=input,继续判断闰年吗?n退出,任意键继续...,)
if((action=='n')or(action=='N')):
print。退出成功「)
flag=False
三、总结
通过本次任务的学习和实践,使我们了解了异常处理的功能和特
点,掌握了常见异常名称和错误类型捕获的方法,养成良好的编程习惯;
并且通过综合实训的引导,能够熟练捕获异常以及出现错误后的处理方
法。实际上这和我们做人做事的道理是一样的,同学们要努力拓展知识
的宽度和深度,面对同一个问题,多思考,多实践,多改进,多总结。
没有做不到,只有色不到,这也是学无止境的道理。
作业布置判断输入年份是否为闰年
教学反思
情景三优化程序的性能
主题包与库序号4
课时2教学手段多媒体、板书、实训室
教学方法讲授法、演示法、案例法
教学课型□理论口实训氏一体化口(其它)
能力目标:能够完成自定义包的创建和导入并使用,能够熟练使用
os库常用函数和path子模块、能够使用matplotlib第三方库按要求
生成可视化图表。
教学目标
知识目标:了解包和库的区别和痔点,掌握常用的标准库和第三方
库。
素质目标:接受新知识、自主学习的能力。
教学重点标准库
教学难点第三方库
备
教学过程设计注
一、复习上一节上课内容并引出本节上课内容
人机交互技术(Human-ComputerInteractionTechniques)是指通过计
算机输入、输出设备,以有效的方式实现人与计算机对话的技术。人
机交互技术包括机器通过输出或显示设备给人提供大量有关信息及
提示请示等,人通过输入设备给机器输入有关信息,回答问题及提示
请示等。人机交互技术是计算机用户界面设计中的重要内容之。本
次任务需要完成两个综合练习,一是输入数字后进行四则运算(画出
流程图)、二是输入用户信息后格式化输出(增加注释)。
二、教学内容
1、什么是包
我们已经学习了模块的基本知识。掌握了Python模块(module何以有
效地避免命名空间的冲突,可以隐藏代码细节让我们专注于高层的逻辑;
同时还可以将一个较大的程序分为多个文件,从而提升代码的可维护性和
可重用性。那什么是包呢?简单来说,包(package)就是一个文件夹,每个
包目录中必须存在_init_.py文件,也就是装着_init_.py文件的文件夹,
该文件的内容可以为空。包是一个分层次的文件目录结构,是模块和子包
的集合体。
2、什么是库
Python库(library),是模块和包的集合,分为标准库、第三方库和自定
义库。Python的标准库也称为Python内置库,是随着Python安装的时候
默认自带的库,常用标准库如下表3-3所示;Python的第三方库是由他人
所写或开源分享出来的,具有特定功能的模块,一般使用pip安装(需要
额外安装至指定目录下),常用的第三方库如下表3-4所示;标准库和第
三方库调用方式是一样的,都需要用import语句调用;自定义库是自己编
写使用的模块。
表3-3常用的标准库
序号名称功能描述
1OS操作系统管理
2sys解释器交互
3shutil文件管理
4math数学常数和数学函数
5random随机数
6datetime日期和时间
7time时间访问和转换
8jsonJSON编码和解码
9glob查找文件
10urllibhttp访问
表3-4常用的第三方库
序号名称类型功能描述
数据分析(数据探索、清理和分
1pandas
析)
2numPy科学计算的基础工具包
数据分析和可视
3scipy算法和数学工具
化
4matplotlib2D绘图库
5pyecharts生成ECharts图表
6plotly基于浏览器的Python图形库
7Scrapy分布式爬虫框架
8requests网络爬虫网络请求库
9bs4(Beautiful可以从htnil或xml中快速提取
Soup)指定数据
10portia开源可视化的爬虫规则编写工具
11Cola分布式的爬虫框架
12pywin32调用WindowsAPI
13seleniumNeb应用程序测试的工具
14PyMySQL操作MySQL数据库
15pymongo自动化操作MongoDB
16openpyxl处理Excel文档
17python-docx处理Word文档
18Pillow处理图形
19Django开源Web应用框架
Web开发
20Flask轻量级Web应用框架
21scikit-learn机器学习(处理复杂数据)
机器学习
22tensorflow机器学习开源软件库
23pygame2D动画和游戏开发引擎
游戏开发
24pyglet3D动画和游戏开发引擎
25wxPythonGUI工具1
图形用户界面
26pyQtGUI工具2
3、包的使用
Python包和模块的结构和操作系统中的文件夹和文件类似。创建包
就是创建一个文件夹,然后将相关的模块文件存储到该文件夹内;为了让
Python将一个文件夹当作包使用,必须要在文件夹中创建一个_init_.py
文件。
通过前面的学习我们知道,包其实本质上还是模块,因此导入模块的
语法同样也适用于导入包。无论导入自定义包,还是导入第三方包,导入
方法可以归结为以下三种方法,用[]括起来的部分,是可选部分,即可
以使用,也可以忽略。
(1)import包名[.模块名[as别名]]
(2)from包名import模块名[as别名]
(3)from包名.模块名import成员名[as别名]
4、标准库
在常用标准库中有一个操作文件和文件夹的OS库,它提供通用的、
基本的操作系统交互功能,主要有:系统相关变量和操作、文件和目录相
关操作、执行命令和管理进程,使用print(dir(os))可以发现,os标准库包
含了丰富的函数,输出结果如下图所示。
。3.4.1py
importosA1AV
print4dirfos))
Run:3.4.1Q-
>D:\py\venv\Scripts\p>thon.exeD:/py/3.4.1.py
(DirEntry,T_OK\GenericAlias;Mappknq',MuUb!eMappinq\OAPPEND,,O_BINARY\O-CREAT,,O_EXCL\
_.()ICWDOM.<)R1)O\IY,(»KDWR.oSII\IIAI.(>SHORIIl\II).,©,TEMPORARY,,
":B.TEX1*O.TRUNC\•O.WRONLY*,T.DETACH\,P.NOWArr,T.N0WAITO'P.OVERLAT.Y.WAIT,
#:'R_OK.SkiKCURsrIKEND*.SEEK.SET\TMP.MAX*,•W.OK*,'X_OK'..AddedDllDirectory*,LEnvIron,.
—・_川_、'_builUns」「cached」'_fUe」J」oader」••一minw''_packago」/_spGC_・,
・\check.methcxis',,^execvpe'.Rexists','.exit',\fspath*,*_get_Gxports_list',*_walk\'_wrap_close','abc'.'abort',
•access*,^dd.dll.direclory,*altsep\'chdir\'chmod\'close*,'closerango*,,cpu.count',,curdir*.,defpath*,
,'
*devico_encoding\'devnull*.*dup*.*dup2*(,environ*,'error*,'oxecl*.exoclo,'txecip*,'exoclpo*,*0xecv\'exoeve,.
,,
,exeevp*.'exeevpe*,'extsep',Tdopen','fsdecode*.'fsencode','fspath*.'fstat','fsync','ftruncate'eget_exec_path,
'get.handle.knheritable*,'geLinhehtable*.'get_terminal_size\'getc^'d1,'getewdb',,getenv','getlogin",'getpid\
'getppid'<'kill','iinesep*,'link*,'listdir',*lseek\*lstat\'makedirs*,*mkdir'r'name',*open\*pardir'r'path,,
'pathsep','pipe',"popen\'putenv*.'read','readlink','remove','removedirs*.'rename",'renames\'replace',*011(14!^,
(scandir*,*sep*.*set_handlo_inheriUble\*sot_inheritablo\'spawn!','spawnle',,spawnv\*spawnve\,st*.*sUrtfile\
'staf.,stat„result,,*slatvfs_result\'strerror',,supports_bytos_environ','supports_dir_fd\'supports,efTective-ids*,
,supports_fd\'supports_follow_symHnks(,'symlink*,•sys'.•system*,'terminaLiize'.'times','times.result*.'truncate'.
*umask\'uname.result','unlink*.,unsetenv\'urandom'.'utime*.'waitpid*.^aitsUtus.to.exitcode','walk*,•write,]
Processfinishedwithexitcode0
5、第三方库
NumPy是Python的一种开源的数值计算扩展,提供了矩阵运算的功
能,其一般与Scipy、matplotlib一起使用,可用来存储和处理大型矩阵,
比Python自身的嵌套列表结构要高效。在任务1.3中已经介绍了第三方库
的安装,这里就不再赘述。
matplotlib是一个python2D绘图库,利用它可以画出许多高质量的图
像,开发者仅需要儿行代码,便可以生成直方图,条形图,饼图,散点图
等。
malplollib图由构成实际图元素的层次结构组成,如图3-21所示。每
个元素都可以被修改,这些元素(python中的对象)包括坐标轴(Axis)、坐标
轴名称(Axislabel)、坐标轴刻度(tick)、坐标轴刻度标签(ticklabel)、网格线
(Grid)、图例(Legend)、标题(Title)等。
o
Figure
Ana®iyofafigurepit.figure
4-T
Title
Oax.settitleBluesi
MinortickOrange
ax.yaxis.setminorlocatorLegend
ax.legend
□
Majorticklabel□口
ix.yaxis.setmajorformatterax.grid
ax.plot
□口□a°o
2-
□□口印口
□口□
ylabeI口口0□
ax.setylabe.□Markert-
aax.scatter
□
Majortick
ax.yaxis.setmajorlocator□①
oSpine
①Axes
yAxisfig.subplots
ax.yaxis——v~~J-
A0.250.5Si<51.251.501.752.252.502.75§3.2
o;xA■xi■s14
ax.xaxis:islabelMinorticklabel
'ax.xaxis.setminorformatter
xlabel
ax.setxlabel
三、总结
通过本次任务的学习和实践,使我们了解了包与库的区别和特点,掌
握了如何创建包和导入包的三种方法,并且通过综合实训的引导,能够熟
练运用标准库大幅提高程序开发的效率;能够安装和使用第三方库完成特
定功能的实现。
功能强大的第三方库,可以让开发者站在巨人的肩膀上工作,将重要
工作由造轮子变成了找轮子,而一个好的轮子有以下特殊:开源、低耦合、
有开发文档、接口友好、社区相对活跃等。为了找到好轮子,需要同学们
具备信息检索能力、外文资料阅读能力和代码阅读能力以及平时的经验积
累。正所谓:“不号陛步无以至千里,不积小流无以成江海”。
作业布置可视化显示手机俏售市场份额
教学反思
情景三优化程序的性能
主题文件操作序号5
课时2教学手段多媒体、板书、实训室
教学方法讲授法、演示法、案例法
教学课型□理论□实训卜体化□(其它)
能力目标:能够熟练掌握文件打开(新建)和关闭的方法,能够根据
实际情况选择正确的文件读写模式、能够熟练掌握三种读文件和二
种写文件函数的功能以及差异。
教学目标
知识目标:掌握文件的类型、编码的格式、文件读写模式和文件打
开与关闭的方法。
素质目标:接受新知识、自主学习的能力。
教学重点打开和读取文件
教学难点写文件
名
教学过程设计2
一、复习上一节上课内容并引出本节上课内容
上一讲中我们学习了包与库,了解了包与库的区别和特点,掌握了如
何创建包和导入包的三种方法,并且通过综合实训的引导,能够熟练运用
标准库大幅提高程序开发的效率;能够安装和使用第三方库完成特定功能
的实现。本节课我们要学习的是文件的相关操作,并完成任务:将E盘卜
的所有目录(子文件夹)和文件名保存到文件。
二、教学内容
1、文件的打开
在python中打开文件使用open内置函数来实现,open底层调用的是
操作系统的接口。代码打开文件可以使用open和withopen两种方式来完
成,具体格式如下。
fl=open(文件名,读写模式,encoding='inf・8')
withopen(文件名,读写模式,encoding='utf-8')asf2:
上述格式中fl和f?是均变量,又称文件句柄,对文件进行的任何操
作,都得通过文件句柄.方法的形式来完成;文件名是需要打开的文件,可
以使用相对路径,也可以使用绝对路径;读写模式可以省略默认为只读,
文件读写模式和描述如表3-7所示;encoding=Uf-8'是告诉python解释器
要按照utf-8编码的方式来读取程序。
序号读写模式描述
1以只读方式打开文件(默认方式)
以只写方式打开文件(打开时清空文
2
件)
3打开文件,在文件末尾添加数据
4'rb'以只读方式打开二进制文件
5,wb'以只写方式打开二进制文件
64ab,以添加方式打开二进制文件
7放在上面模式后,设置读写模式
2、文件的关闭
文件使用完后,切记要使用close函数关闭已打开的文件。即使文件
会在程序退出后自动关闭,但是考虑到数据的安全性,在每次使用完文件
后,都要使用close函数关闭文件,否则一旦程序崩溃,很可能导致文件
中的数据没有保存。所以文件打开使用完后,一定要及时关闭,同学们要
养成这个好习惯,关闭文件参考代码如下。
print,正准备打开一个文件)
fl=opcn('D:\\py\\test.txf,,w+,)
prin《文件打开成功,)
fl.close()
print,文件已经关闭)
3、读文件
可以用read()、readline()和readlines()来读取文件的内容。
(l)read():—次性读取文件中的数据,可选参数size,用于控制读取
文件的字节数,如果省略表示一次性全部内容。现使用read。读取当前项
目中“cqcvc.txt”文件中的内容,参考代码如下,运行后的效果如图3-26
所示。
print,打开文件指定文件)
fl=open('D:\\py\\cqcvc.txt,,encoding='UTF-8')
print,读取文件内容)
infor=fl.read()
prinlC文件内容如下:’)
print(infor)
fl.close()
prime文件已经关闭,)
(2)readline()每次读取文件的一行数据,如果给定了size,有可能只
返回一行的部分内容,以字符串的形式返回,并在结尾会有一个换行符
'\n'。现使用readline。读取“cqcvc.txt”文件中的第一行内容,参考代码
和运行后的效果如图所示。
Projec.xO=。一;3.5.2readline.py
■D:\pyprint。打开指定文件,)
>>.idea,
fl=open('cqcvc.txt;'/encoding='UTF-8)
>>code
1KJprintC读取文件内容')
>Elcqcvc
infor=fl.readline()
cqyc
。文件一行文件
>QtDesignerprint内容如E:')
>・venvprint(infor)
r*3.5.2read.pyfl.closeQ
3.5.2readline.pyprint]文件己经关闭,)
三cqcvc.txt
I:3.5.2readline
D:\py\venv\Scripts\python.exe"D:/py/3.5.2readline.py'1
.打开指定文件
-读取文件内容
:文件一行文件内容如下:
重庆城市职业学院学院简介
■文件已经关闭
Processfinishedwithexitcode0
(3)readlines()一次读取整个文件,并自动将文件内容分析成一个行的
列表。现使用readlines。读取当前项目中“cqcvc.txt”文件中的内容,参考
代码和运行后的效果如下图所示。
p*3.5.2readlines.py3.5.2readlines▼A益。■
1Projec.T02。一,3.5.2readlines.py
>-codeprint(•打开拊定文件)△3W2
>Qcqcvcf=open('cqcvc.txt',encoding='UTF-8,)
・cqycprint('读取文件内容如F:')
>QtDesigner
|infor=f.readlines()|
>venv
print(infor)
“3.5.2read.py
f.close()
J3.5.2readline.py
,3.5.2readlineall.pyprint。文件已经关闭')
3.5.2readlines.py1
♦cqcvc.txt
in:3.5.2readlines
t读取文件内容如下:
。重庆城市职业学院学院简介\n''★全国党建工作样板党支部培育创建单位\t★重庆市
,5F高"校立项建设单位\n','★全国职工教育先进单位\t\t\t★重庆市智道校园建设示范学校、!!','★?{
育部现代学徒制试点单位\t\t★重庆市工人先锋号\n>★工业和信息化部产教融合专业试点单位\t,
重庆市高技能人才培训基地\n「★教育部"一站式"学生社区建设试点单位\t★鲁渝高校高水平专业
共建单位\n「★教育部供需对接就业育人项目入选单位\t★应庆市高校思想政治教育精品项目建设
位\n:'★国家级技能大师工作室建设单位\t\t★重庆市教育系统就业创业先进集体\a,'★中国-老拉
职业教育发展共同体牵头单位\t★重庆市职业教育现代产业学院建设单位\n','★世界技能大赛移动;
器人赛项集训基地\l*i6庆市国际化特色项目建设单⑥)
文件已经关闭
4、写文件
向打开的文件写入数据的函数有两个,分别是:write(),writelines()o
(l)write():该函数用来将文本字符串写入已经创建的文件中。现在我
们使用open()打开一个文本文件“yc.txt",再使用write()将以下内容:
“永川位于长江上游北岸、重庆西部,\n因三河汇碧形如篆文“永”字、
山型如“川”字而得名,\n东距重庆中心城区55公里,西离成都276公
里,\n是成渝地区双城经济圈枢纽节点、重庆主城都市区战略支点。\n”
写入“yc.txt”文件,参考代码如工,运行后的效果如下图所示。
printC打开yc.txt文件)
f=open('yc.txt','r+',encoding=,UTF-8,)
infor=f.read()
print,文件原内容是:,+infor)
print。在文件末尾添加文字,)
f.wriief永川位于长江上游北岸、重庆西部,\n,
,因三河汇碧形如篆文“永”字、山型如“川”字而得名,\n'
冻距重庆中心城区55公里,西离成都276公里,H
,是成渝地区双城经济圈枢纽节点、重庆主城都市区战略支点。\n')
printC文件末尾添加文字成功)
f.close()
prime文件己经关闭)
Prqjec..T©!Q-
>code走进永川
>tlcqcvc水川位于长江上游北岸、重庆西部.
・cqyc
因三河汇碧形如篆文"永''字、山型如"川''字而得名,
>QtDesigner
东距仇庆中心城区55公里,西离成都276公里,
>venv
~3.5.3write.py是成渝地区双城经济圈枢纽节点、重庆主城部市区战略支点。
jjcqcvc.txt___________6
yc.txt
n:3.5.3write
D:\py\venv\Scripts\python.exe"D:/py/3.5.3write.py"
打一yc.txt文件
-文件原内容是:走进永川
:P
在文件末尾添加文字
存便件末尾添加文字丽1
■文件己经关闭
(2)writclines():该函数把对象中的多个字符串一次性全部写到文件
中,需要注意的是:序列中的内容也必须是字符串类型才可以。现在我们
继续使用open()打开文本文件“yc.txt",再使月writelines()将以下内容:
“[中国?重庆?
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论