Python程序设计_教学大纲_段震

Python程序设计_教学大纲_段震
Python程序设计_教学大纲_段震

《Python程序设计》

教学大纲

安徽大学计算机科学与技术学院

2015年10 月

课程性质与设置目的要求(前言)

《Python程序设计》课程是计算机科学与技术学院各专业的专业选修课程。Python是一门开源的高级动态编程语言,支持命令式编程、函数式编程、面向对象程序设计,语法简洁清晰,并且拥有大量功能丰富而强大的标准库和扩展库。本课程将从Python语言的实现机制入手,结合示例程序和上机实验,较为系统地介绍Python语言的主要特征和编程技术。

设置本课程的目的是:使学习者在全面了解Python技术历史、现状与发展趋势的基础上,系统掌握Python基本概念、编程思想以及程序设计技术,具备熟练的Python编程技能和面向对象软件设计技术思想,完成本课程的学习后能够熟练地综合应用Python技术和面向对象的思想编写程序解决现实生活中的问题,最终提高程序设计水平和计算机应用能力,从而能胜任企业软件研发以及科研院所的研发、教学任务。

学习本课程的要求是:学习者应理解Python的编程模式,熟练运用Python 列表、元组、字典、集合等基本数据类型以及相关列表推导式、切片等特性来解决实际问题,熟练掌握Python分支结构、循环结构、函数设计以及类的设计与使用,熟练使用正则表达式处理字符串,同时掌握不同领域的Python扩展模块,并能够解决实际问题。

先修课程要求:无

本课程计划34学时,2学分。

选用教材:董付国. Python程序设计(第2版).北京:清华大学出版社,2016.5.

考核方法:考查

教学进程安排表:

周次学

教学主要内容

教学

环节

1 3 Python的安装与使用

Python扩展库的管理

Python中的数据类型

讲课

2 3 Python中的内置函数、基本输入输出

Python代码编写规范

Python文件名和程序运行

讲课

3 3 Python中的列表使用讲课

4 3 Python中的元组、字典及集合的使用讲课

5 3 选择和循环结构讲课

6 3 字符串和正则表达式讲课

7 3 函数的设计与使用讲课

8 3

类的定义与使用

类的方法和属性

讲课

9 3 文本文件的基本操作

二进制文件操作

文件操作和目录操作

讲课

10 3

异常处理结构与程序调试

GUI编程

讲课

11 3+1 网络程序设计

多线程编程

课程随堂测试

讲课+

测试

第一章基础知识

一、学习目的

Python语言的发展过程、安装及简单使用;Python程序设计中的基本知识;Python 代码的编写规范;Python文件名的要求;Python程序的运行方式;编写自己的包以及基本示例。本章计划6学时。

二、课程内容

1.0 Python是一种怎样的语言

Python是一门跨平台、开源、免费的解释型高级动态编程语言,同时也支持伪编译将Python源程序转换为字节码来优化程序和提高运行速度。

Python支持命令式编程、函数式编程,完全支持面向对象程序设计,语法简洁清晰,并且拥有大量的几乎支持所有领域应用开发的成熟扩展库。

1.1 如何选择Python版本

多版本共存与切换简便方法:更改系统环境变量path

查看已安装版本的方法

有时候可能需要同时安装多个不同的版本,并根据不同的开发需求在两个版本之间进行切换。

1.2 Python安装与简单使用

默认编程环境:IDLE

1.3 使用pip管理第三方包

Python2中需要单独安装

下载地址:https://https://www.360docs.net/doc/c49057434.html,/pypi/pip

安装方法:cmd==>python get-pip.py

用法示例

Python3安装包中已默认包含pip

1.4.1 Python的对象模型

对象是python语言中最基本的概念,在python中处理的每样东西都是对象。python 中有许多内置对象可供编程者使用,内置对象可直接使用,如数字、字符串、列表、del 等;非内置对象需要导入模块才能使用,如正弦函数sin(x),随机数产生函数random( )等。

常用内置对象

1.4.2 Python变量

在Python中,不需要事先声明变量名及其类型,直接赋值即可创建各种类型的对象变量。

虽然不需要在使用之前显式地声明变量及其类型,但是Python仍属于强类型编程语言。

Python还是一种动态类型语言

Python采用的是基于值的内存管理方式

Python具有自动内存管理功能

在定义变量名的时候,需要注意的问题。

1.4.3 数字

数字是python中最常用的对象,属于不可变对象。

可以表示任意大小的数字。

1.4.4 字符串

用单引号、双引号或三引号括起来的符号系列称为字符串

单引号、双引号、三单引号、三双引号可以互相嵌套,用来表示复杂字符串。

1. 字符串合并

2. 字符串格式化

3. 转义字符

1.4.5 操作符和表达式

Python中很多运算符有多重含义,在程序中运算符的具体含义取决于操作数的类型。

在Python中,单个任何类型的对象或常数属于合法表达式。

1.4.6 常用内置函数

内置函数不需要导入任何模块即可使用

执行下面的命令可以列出所有内置函数

>>> dir(__builtins__)

1.4.7 对象的删除

在Python中具有自动内存管理功能。

可以使用del命令来显式删除对象并解除与值之间的指向关系。

1.4.8 基本输入输出

用Python进行程序设计,输入是通过input( )函数来实现的。

尽管形式一样,Python 2.x和Python 3.x对该函数的解释略有不同。

1.4.9 模块的使用

Python默认安装仅包含部分基本或核心模块,但用户可以安装大量的扩展模块,pip 是管理模块的重要工具

import 模块名

1.5 Python代码规范

(1)缩进

(2)注释

(3)每个import只导入一个模块

(4)如果一行语句太长,可以在行尾加上\来换行分成多行,但是更建议使用括号来包含多行内容。

(5)必要的空格与空行

(6)适当使用异常处理结构进行容错,后面将详细讲解。

(7)软件应具有较强的可测试性,测试与开发齐头并进。

1.6 Python文件名

1.7 Python脚本的“__name__”属性

1.8 编写自己的包与模块

包可以看做处于同一目录中的模块。

1.9 Python快速入门

问题1:用户输入一个三位自然数,计算并输出其佰位、十位和个位上的数字。

问题2:已知三角形的两边长及其夹角,求第三边长。

问题3:任意输入三个英文单词,按字典顺序输出。

三、重点、难点提示

(一)Python中的对象

(二)Python代码的编写规范

四、思考与练习

安装Python开发包,并练习使用pip管理扩展库

编程实现教材上的示例

习题1.10

第二章Python数据结构

一、学习目的

Python中的数据结构,包括列表、元祖、字典、集合以及其他基本数据结构。本章计划6学时。

二、课程内容

2.1 列表

列表是Python中内置可变序列,是若干元素的有序集合,列表中的每一个数据称为元素,列表的所有元素放在一对中括号“[”和“]”中,并使用逗号分隔开;

当列表元素增加或删除时,列表对象自动进行扩展或收缩内存,保证元素之间没有缝隙;

在Python中,一个列表中的数据类型可以各不相同,可以同时分别为整数、实数、字符串等基本类型,甚至是列表、元素、字典、集合以及其他自定义类型的对象。

●列表创建与删除

●列表元素的增加

●列表元素的删除

●列表元素访问与计数

●成员资格判断

●切片操作

●列表排序

●用于序列操作的常用内置函数

●列表推导式

2.2 元组

元组和列表类似,但属于不可变序列,元组一旦创建,用任何方法都不可以修改其元素。

元组的定义方式和列表相同,但定义时所有元素是放在一对圆括号“(”和“)”中,而不是方括号中。

●元组创建与删除

●元组与列表的区别

●序列解包

●生成器推导式

2.3 字典

字典是键值对的无序可变集合。

定义字典时,每个元素的键和值用冒号分隔,元素之间用逗号分隔,所有的元素放在一对大括号“{”和“}”中。

字典中的每个元素包含两部分:键和值,向字典添加一个键的同时,必须为该键增添一个值。

字典中的键可以为任意不可变数据,比如整数、实数、复数、字符串、元组等等。

字典中的键不允许重复。

globals()返回包含当前作用域内所有全局变量和值的字典

locals()返回包含当前作用域内所有局部变量和值的字典

●字典创建与删除

●字典元素的读取

●字典元素的添加与修改

●字典应用案例

●有序字典

●字典推导式

2.4 集合

集合是无序可变集合,使用一对大括号界定,元素不可重复。

●集合的创建与删除

●集合操作

●集合推导式

2.5 再谈内置方法sorted()

2.6 其他数据结构

在Python中,除了基本序列之外,还有其他一些常用的数据结构,如堆、栈、队列、树、图等等。有些结构Python已经提供,而有些则需要自己利用基本数据结构来实现。

●堆

●队列

●栈

●链表

●二叉树

●有向图

三、重点、难点提示

(一)Python中的常见数据结构及其使用差异

(二)Python运算符的多重含义

四、思考与练习

编程实现教材上的示例

习题2.3 / 2.5 / 2.9 / 2.10

第三章选择与循环

一、学习目的

Python中的运算符和条件表达式;选择结构和循环结构的基本使用。本章计划3学时。

二、课程内容

3.1 条件表达式

算术运算符:+、-、*、/、//、%、**

关系运算符:>、<、==、<=、>=、!=,可以连续使用

测试运算符:in、not in、is、is not

逻辑运算符:and、or、not,注意短路求值

位运算符:~、&、|、 ^、 <<、>>

3.2 选择结构

●单分支选择结构

●双分支结构

●多分支结构

●选择结构的嵌套

●选择结构应用

3.3 循环结构

●for循环与while循环

Python提供了两种基本的循环结构语句——while语句、for语句。

while循环一般用于循环次数难以提前确定的情况,也可以用于循环次数确定的情况;

for循环一般用于循环次数可以提前确定的情况,尤其是用于枚举序列或迭代对象中的元素;

一般优先考虑使用for循环。

相同或不同的循环结构之间都可以互相嵌套,实现更为复杂的逻辑。

●循环结构的优化

为了优化程序以获得更高的效率和运行速度,在编写循环语句时,应尽量减少循环内部不必要的计算,将与循环变量无关的代码尽可能地提取到循环之外。对于使用多重循环嵌套的情况,应尽量减少内层循环中不必要的计算,尽可能地向外提。

3.4 break和continue语句

break语句在while循环和for循环中都可以使用,一般放在if选择结构中,一旦break语句被执行,将使得整个循环提前结束。

continue语句的作用是终止当前循环,并忽略continue之后的语句,然后回到循环的顶端,提前进入下一次循环。

除非break语句让代码更简单或更清晰,否则不要轻易使用。

3.5 案例精选

三、重点、难点提示

(一)Python的关系运算符和条件表达式

(二)Python中的代码缩进

(三)循环代码的优化

四、思考与练习

编程实现教材上的示例

习题3.5 / 3.7 / 3.8

第四章字符串与正则表达式

一、学习目的

Python中的字符串及字符串的常用方法;正则表达式的基本内容及综合运用。本章计划3学时。

二、课程内容

4.1 字符串

在Python中,字符串也属于序列类型,除了支持序列通用方法(包括分片操作)以外,还支持特有的字符串操作方法。

字符串属于不可变序列类型

Python字符串驻留机制:对于短字符串,将其赋值给多个不同的对象时,内存中只有一个副本,多个对象共享该副本。长字符串不遵守驻留机制。

判断一个变量s是否为字符串,应使用isinstance(s,basestring)。在Python3之前,字符串有str和unicode两种,其基类都是basestring。在Python3之后合二为一了。

在Python3中,程序源文件默认为UTF-8编码,全面支持中文,字符串对象不再有encode和decode方法。

●字符串格式化

●字符串常用方法

●字符串常量

4.2 正则表达式

正则表达式是字符串处理的有力工具和技术。

正则表达式使用某种预定义的模式去匹配一类具有共同特征的字符串,主要用于处理字符串,可以快速、准确地完成复杂的查找、替换等处理要求。

Python中,re模块提供了正则表达式操作所需要的功能。

●正则表达式元字符

.:匹配除换行符以外的任意单个字符

*:匹配位于*之前的0个或多个字符

+:匹配位于+之前的一个或多个字符

|:匹配位于|之前或之后的字符

^:匹配行首,匹配以^后面的字符开头的字符串

$:匹配行尾,匹配以$之前的字符结束的字符串

?:匹配位于?之前的0个或1个字符

\:表示位于\之后的为转义字符

[]:匹配位于[]中的任意一个字符

-:用在[]之内用来表示范围

():将位于()内的内容作为一个整体来对待

{}:按{}中的次数进行匹配

\b:匹配单词头或单词尾

\B:与\b含义相反

\d:匹配任何数字,相当于[0-9]

\D:与\d含义相反

\s:匹配任何空白字符

\S:与\s含义相反

\w:匹配任何字母、数字以及下划线,相当于[a-zA-Z0-9_]

\W:与\w含义相反

●re模块主要方法

compile(pattern[,flags]):创建模式对象

search(pattern,string[,flags]):在字符串中寻找模式

match(pattern,string[,flags]):从字符串的开始处匹配模式

findall(pattern,string[,flags]):列出字符串中模式的所有匹配项

split(pattern,string[,maxsplit=0]):根据模式匹配项分割字符串

sub(pat,repl,string[,count=0]):将字符串中所有pat的匹配项用repl替换escape(string):将字符串中所有特殊正则表达式字符转义

●直接使用re模块方法

●使用正则表达式对象

●子模式与match对象

●正则表达式应用案例

三、重点、难点提示

(一)正则表达式子模块扩展语法

(二)字符串编码,字符串格式化

四、思考与练习

编程实现教材上的示例

习题4.2 / 4.3 / 4.5

第五章函数设计与使用

一、学习目的

Python中函数的定义方法;参数类型;变量作用域。本章计划3学时。

二、课程内容

5.1 函数定义

def 函数名([参数列表]):

'''注释'''

函数体

5.2 形参与实参

函数定义时括弧内为形参,一个函数可以没有形参,但是括弧必须要有,表示该函数不接受参数。

函数调用时向其传递实参,将实参的值或引用传递给形参。

在函数内直接修改形参的值不影响实参。

5.3 参数类型

在Python中,函数参数有很多种:可以为普通参数、默认值参数、关键参数、可变长度参数等等。

Python函数的定义非常灵活,在定义函数时不需要指定参数的类型,也不需要指定函数的类型,完全由调用者决定,类似于重载和泛型;

函数编写如果有问题,只有在调用时才能被发现,传递某些参数时执行正确,而传递另一些类型的参数时则出现错误。

●默认值参数

def 函数名(形参名=默认值,……)

函数体

默认值参数必须出现在函数参数列表的最右端,且任何一个默认值参数右边不能有非默认值参数。

调用带有默认值参数的函数时,可以不对默认值参数进行赋值,也可以赋值,具有较大的灵活性。

●关键参数

关键参数主要指实参,即调用函数时的参数传递方式。

通过关键参数传递,实参顺序可以和形参顺序不一致,但不影响传递结果,避免了用户需要牢记位置参数顺序的麻烦。

●可变长度参数

可变长度参数主要有两种形式:*parameter和**parameter,前者用来接受多个实参并将其放在一个元组中,后者接受字典形式的实参。

●参数传递的序列解包

传递参数时,可以通过在实参序列前加星号将其解包,然后传递给多个单变量形参。

5.4 return语句

return语句用来从一个函数中返回,即跳出函数,也可用return语句从函数中返回一个值。

如果函数没有return语句,Python将认为该函数以return None结束。

5.5 变量作用域

变量起作用的范围称为变量的作用域。

一个变量在函数外部定义和在函数内部定义,其作用域是不同的。

局部变量的引用比全局变量速度快。

三、重点、难点提示

(一)默认值参数,关键参数,可变长度参数,参数传递时的序列解包

(二)Lambda表达式

四、思考与练习

编程实现教材上的示例

习题5.2 / 5.3 / 5.10

第六章面向对象程序设计

一、学习目的

Python中类的定义与使用;类的方法;Python2和Python3中的类的属性。本章计划3学时。

二、课程内容

6.1 类的定义与使用

●类定义语法

Python使用class关键字来定义类,class关键字之后是一个空格,然后是类的名字,再然后是一个冒号,最后换行并定义类的内部实现。类名的首字母一般要大写,当然您也可以按照自己的习惯定义类名,但是一般推荐参考惯例来命名,并在整个系统的设计和实现中保持风格一致,这一点对于团队合作尤其重要。例如:

定义了类之后,可以用来实例化对象,并通过“对象名.成员”的方式来访问其中的数据成员或成员方法,例如下面的代码:

Python提供了一个关键字“pass”,类似于空语句,可以用在类和函数的定义中或者选择结构中。当暂时没有确定如何实现功能,或者为以后的软件升级预留空间,或者其他类型功能时,可以使用该关键字来“占位”。

●self参数

类的所有实例方法都必须至少有一个名为“self”的参数,并且必须是方法的第一个形参(如果有多个形参的话),“self”参数代表将来要创建的对象本身。在类的实例方法中访问实例属性时需要以“self”为前缀,但在外部通过对象名调用对象方法时并不需要传递这个参数,如果在外部通过类名调用对象方法则需要显式为self参数传值。

在Python中,在类中定义实例方法时将第一个参数定义为“self”只是一个习惯,而实际上类的实例方法中第一个参数的名字是可以变化的,而不必须使用“self”这个名字。

●类成员与实例成员

这里主要指数据成员,或者广义上的属性。可以说属性有两种,一种是实例属性,另一种是类属性。实例属性一般是指在构造函数__init__()中定义的,定义和使用时必须以self作为前缀;类属性是在类中所有方法之外定义的数据成员。在主程序中(或类的外部),实例属性属于实例(对象),只能通过对象名访问;而类属性属于类,可以通过类名或对象名访问。

在类的方法中可以调用类本身的其他方法,也可以访问类属性以及对象属性。在Python中比较特殊的是,可以动态地为类和对象增加成员,这一点是和很多面向对象程序设计语言不同的,也是Python动态类型特点的一种重要体现。

●私有成员与公有成员

Python并没有对私有成员提供严格的访问保护机制。在定义类的属性时,如果属性名以两个下划线“__”开头则表示是私有属性,否则是公有属性。私有属性在类的外部不能直接访问,需要通过调用对象的公有成员方法来访问,或者通过Python支持的特殊方式来访问。Python提供了访问私有属性的特殊方式,可用于程序的测试和调试,对于成员方法也具有同样的性质。

私有属性是为了数据封装和保密而设的属性,一般只能在类的成员方法(类的内部)中使用访问,虽然Python支持一种特殊的方式来从外部直接访问类的私有成员,但是并不推荐您这样做。公有属性是可以公开使用的,既可以在类的内部进行访问,也可以在外部程序中使用。

在Python中,以下划线开头的变量名和方法名有特殊的含义,尤其是在类的定义中。用下划线作为变量名和方法名前缀和后缀来表示类的特殊成员:

_xxx:这样的对象叫做保护成员,不能用'from module import *'导入,只有类对象和子类对象能访问这些成员;

__xxx__:系统定义的特殊成员;

__xxx:类中的私有成员,只有类对象自己能访问,子类对象也不能访问到这个成员,但在对象外部可以通过“对象名._类名__xxx”这样的特殊方式来访问。Python中不存在严格意义上的私有成员。

6.2 方法

在类中定义的方法可以粗略分为四大类:公有方法、私有方法、静态方法和类方法。其中,公有方法、私有方法都属于对象,私有方法的名字以两个下划线“__”开始,每个对象都有自己的公有方法和私有方法,在这两类方法中可以访问属于类和对象的成员;公有方法通过对象名直接调用,私有方法不能通过对象名直接调用,只能在属于对象的方法中通过“self”调用或在外部通过Python支持的特殊方式来调用。如果通过类名来调用属于对象的公有方法,需要显式为该方法的“self”参数传递一个对象名,用来明确指定访问哪个对象的数据成员。静态方法和类方法都可以通过类名和对象名调用,但不能直接访问属于对象的成员,只能访问属于类的成员。一般将“cls”作为类方法的第一个参数名称,但也可以使用其他的名字作为参数,并且在调用类方法时不需要为该参数传递值。

6.3 属性

Python 2.x和Python 3.x对属性的实现和处理方式不一样,内部实现有较大的差异,使用时应注意二者之间的区别。

●Python 2.x中的属性

●Python 3.x中的属性

在Python 3.x中,属性得到了较为完整的实现,支持更加全面的保护机制。例如下面的代码所示,如果设置属性为只读,则无法修改其值,也无法为对象增加与属性同名的新成员,同时,也无法删除对象属性。

6.4 常用特殊方法

Python类有大量的特殊方法,其中比较常见的是构造函数和析构函数。Python中类的构造函数是__init__(),一般用来为数据成员设置初值或进行其他必要的初始化工作,在创建对象时被自动调用和执行,可以通过为构造函数定义默认值参数来实现类似于其他语言中构造函数重载的目的。如果用户没有设计构造函数,Python将提供一个默认的构造函数用来进行必要的初始化工作。Python中类的析构函数是__del__(),一般用来释放对象占用的资源,在Python删除对象和收回对象空间时被自动调用和执行。如果用户没有编写析构函数,Python将提供一个默认的析构函数进行必要的清理工作。

6.5 继承机制

继承是为代码复用和设计复用而设计的,是面向对象程序设计的重要特性之一。当我们设计一个新类时,如果可以继承一个已有的设计良好的类然后进行二次开发,无疑

会大幅度减少开发工作量。在继承关系中,已有的、设计好的类称为父类或基类,新设计的类称为子类或派生类。派生类可以继承父类的公有成员,但是不能继承其私有成员。如果需要在派生类中调用基类的方法,可以使用内置函数super()或者通过“基类名.方法名()”的方式来实现这一目的。

Python支持多继承,如果父类中有相同的方法名,而在子类中使用时没有指定父类名,则Python解释器将从左向右按顺序进行搜索。

三、重点、难点提示

(一)Python对象的可变性

(二)属性的定义与使用

四、思考与练习

编程实现教材上的示例

习题6.1 / 6.2

第七章文件操作

一、学习目的

文本文件的基本操作;二进制文件的基本操作;文件操作和目录操作。本章计划3学时。

二、课程内容

7.1 文件基本操作

文件对象名=open(文件名[, 打开方式[, 缓冲区]])

(1)文件名指定了被打开的文件名称。

(2)打开模式指定了打开文件后的处理方式。

(3)缓冲区指定了读写文件的缓存模式。0表示不缓存,1表示缓存,如大于1则表示缓冲区的大小。默认值是缓存模式。

(4)open( )函数返回1个文件对象,该对象可以对文件进行各种操作。

7.2 文本文件基本操作

使用with自动关闭资源。可以在代码块执行完毕后还原进入该代码块时的现场。

不论何种原因跳出with块,总能保证文件被正确关闭。

7.3 二进制文件操作案例精选

数据库文件、图像文件、可执行文件、音视频文件、Office文档等等均属于二进制文件。对于二进制文件,不能使用记事本或其他文本编辑软件进行正常读写,也无法通过Python的文件对象直接读取和理解二进制文件的内容。必须正确理解二进制文件结构和序列化规则,才能准确地理解二进制文件内容并且设计正确的反序列化规则。所谓序列化,简单地说就是把内存中的数据在不丢失其类型信息的情况下转成对象的二进制形式的过程,对象序列化后的形式经过正确的反序列化过程应该能够准确无误地恢复为原来的对象。

Python中常用的序列化模块有struct、pickle、json、marshal和shelve,其中pickle有C语言实现的cPickle,速度约提高1000倍,应优先考虑使用。

●使用pickle模块

●使用struct模块

7.4 文件级操作

如果仅需要对文件内容进行读写,可以使用7.1节中介绍的文件对象;如果需要处理文件路径,可以使用os.path模块中的对象和方法;如果需要使用命令行读取文件内容可以使用fileinput模块;创建临时文件和文件夹可以使用tempfile模块;另外,Python 3.4的pathlib模块提供了大量用于表示和处理文件系统路径的类。

●os与os.path模块

●shutil模块

7.5 目录操作

7.6 高级话题

●计算CRC32值(Python 2.7.x)

●计算CRC32值(Python 3.x版本)

●计算文本文件中最长行的长度

●计算MD5值(Python 2.7.x版本)

●判断一个文件是否为GIF图像文件

●比较两个文本文件是否相同

●使用xlwt写入Excel文件

●使用xlrd读取Excel文件

●使用Pywin32操作Excel文件

●检查word文档的连续重复字

三、重点、难点提示

(一)文件操作三步骤

(二)二进制文件读写方式,序列化模块pickle与struct

(三)遍历文件夹时递归的应用

四、思考与练习

编程实现教材上的示例

习题7.1 / 7.2 / 7.5

第八章异常处理结构与程序调试

一、学习目的

异常处理的基本概念;Python中的异常处理结构。本章计划1学时。

二、课程内容

8.1 什么是异常

语法错误和逻辑错误不属于异常,但有些语法错误往往会导致异常,例如由于大小写拼写错误而访问不存在的对象。

当Python检测到一个错误时,解释器就会指出当前流已无法继续执行下去,这时候就出现了异常。异常是指因为程序出错而在正常控制流以外采取的行为。

异常分为两个阶段:第一个阶段是引起异常发生的错误;第二个阶段是检测并处理阶段。

不建议使用异常来代替常规的检查,如if...else判断。

应避免过多依赖于异常处理机制。

当程序出现错误,python会自动引发异常,也可以通过raise显式地引发异常。

8.2 Python中的异常类

BaseException

+-- SystemExit

+-- KeyboardInterrupt

+-- GeneratorExit

+-- Exception

+-- StopIteration

+-- ArithmeticError

| +-- FloatingPointError

| +-- OverflowError

| +-- ZeroDivisionError

+-- AssertionError

+-- AttributeError

+-- BufferError

+-- EOFError

+-- ImportError

+-- LookupError

| +-- IndexError

| +-- KeyError

+-- MemoryError

+-- NameError

| +-- UnboundLocalError

+-- OSError

| +-- BlockingIOError

| +-- ChildProcessError

| +-- ConnectionError

| | +-- BrokenPipeError

| | +-- ConnectionAbortedError | | +-- ConnectionRefusedError | | +-- ConnectionResetError | +-- FileExistsError

| +-- FileNotFoundError

| +-- InterruptedError

| +-- IsADirectoryError

| +-- NotADirectoryError

| +-- PermissionError

| +-- ProcessLookupError

| +-- TimeoutError

+-- ReferenceError

+-- RuntimeError

| +-- NotImplementedError

+-- SyntaxError

| +-- IndentationError

| +-- TabError

+-- SystemError

+-- TypeError

+-- ValueError

| +-- UnicodeError

| +-- UnicodeDecodeError

| +-- UnicodeEncodeError

| +-- UnicodeTranslateError +-- Warning

Python程序设计基础教案8--程序的分支结构

授课教案

授课教案附页 教学设计说明一、程序的三种基本结构 任何简单或复杂的算法都可以由顺序结构、选择结构和循环结构这三种基本 结构组合而成。 (1)顺序结构:程序中的各个操作是按照它们在源代码中的排列顺序依次 执行的; (2)选择结构:根据某个特定的条件进行判断后,选择其中一支执行;分 为:单项选择、双选选择和多项选择; (3)循环结构:反复执行某个或某些操作,直到条件为假或为真时才停止 循环。 二、顺序结构 顺序结构是流程控制中最简单的一种结构。 该结构的特点是按照语句的先后次序依次执行,每条语句只执行一次。 顺序结构的程序设计方法: 案例讲解: 项目实践一的前4问就是一个典型的顺序结构。 (1)根据题干要求,即要解决的问题,确定变量的个数。项目实践一用到8 个变量,分别是:姓名、班级、数学成绩、语文成绩、英语成绩、总分、平均分、 数学成绩的平方根。

(2)给变量赋值。①变量值需使用input()函数由用户通过键盘输入。涉及到5个变量:姓名、班级、数学成绩、语文成绩、英语成绩。其中三个成绩变量由于是浮点数类型,而通过input( )输入的是字符串类型,所以需要用到float( )函数进行强制类型转换。②直接给出变量的值:直接赋值或通过表达式计算。项目实践一中:总分、平均分、数学成绩的平方根这3个变量都是通过表达式计算并将计算结果直接复制给变量。 (3)输出相应的信息和计算结果。例如:输出学生的基本信息、总分、平均分、数学成绩的平方根。 三、选择结构(条件语句) 选择结构用于判断给定的条件,根据判断的结果判断某些条件,根据判断的结果来控制程序的流程。 三种选择语句:

Python程序设计基础习题复习资料与分析

Python程序设计基础习题答案与分析 程昱

第1章基础知识 1.1 简单说明如何选择正确的Python版本。 答: 在选择Python的时候,一定要先考虑清楚自己学习Python的目的是什么,打算做哪方面的开发,有哪些扩展库可用,这些扩展库最高支持哪个版本的Python,是Python 2.x还是Python 3.x,最高支持到Python 2.7.6还是Python 2.7.9。这些问题都确定以后,再做出自己的选择,这样才能事半功倍,而不至于把大量时间浪费在Python的反复安装和卸载上。同时还应该注意,当更新的Python版本推出之后,不要急于更新,而是应该等确定自己所必须使用的扩展库也推出了较新版本之后再进行更新。 尽管如此,Python 3毕竟是大势所趋,如果您暂时还没想到要做什么行业领域的应用开发,或者仅仅是为了尝试一种新的、好玩的语言,那么请毫不犹豫地选择Python 3.x系列的最高版本(目前是Python 3.4.3)。 1.2 为什么说Python采用的是基于值的内存管理模式? Python采用的是基于值的内存管理方式,如果为不同变量赋值相同值,则在内存中只有一份该值,多个变量指向同一块内存地址,例如下面的代码。 >>> x = 3 >>> id(x) >>> y = 3 >>> id(y) >>> y = 5 >>> id(y) >>> id(x) >>> x = [1, 2, 3, 1, 1, 2] >>> id(x[0])==id(x[3])==id(x[4]) True 1.3 解释Python中的运算符“/”和“//”的区别。 答: 在Python 2.x中,“/”为普通除法,当两个数值对象进行除法运算时,最终结果的精度与操作数中精度最高的一致;在Python 3.x中,“/”为真除法,与除法的数学含义一致。

智慧树知到《Python程序设计基础》章节测试答案

智慧树知到《Python程序设计基础》章节测试答案绪论 1、学好Python程序设计要注意的几个问题是 A:多看多练 B:多想多整理 C:多交流多请教 D:只看视频,不思考、不练习 答案: 多看多练,多想多整理,多交流多请教 2、本门课程将主要介绍哪些内容 A:运算符 B:内置函数 C:常用数据类型 D:文件操作 答案: 运算符,内置函数,常用数据类型,文件操作 第一章 1、下面特点属于Python语言的有哪些 A:开源 B:免费 C:跨平台

D:解释执行 答案: 开源,免费,跨平台,解释执行 2、Python支持函数式编程。 A:对 B:错 答案: 对 3、对于Python程序,对代码缩进的要求非常严格。 A:对 B:错 答案: 对 4、一般建议,每行Python代码的长度不要超过屏幕宽度,如果确实太长的话,应使用续行符。 A:对 B:错 答案: 对 5、一般来说,程序中的重要代码应加上适当的注释。 A:对 B:错 答案: 对

6、下面导入标准库对象的语句,正确的有 A:from math import sin B:from random import random C:from math import D:import 答案: from math import sin,from random import random,from math import *第二章 1、Python无法表示9999这样大的整数。 A:对 B:错 答案: 错 2、集合中的元素都是唯一的,不会有重复。 A:对 B:错 答案: 对 3、Python中变量的类型是动态的,随时可以变化。 A:对 B:错

Python程序设计快速入门教学

程序设计快速入门教学 的中文意思是巨蟒,大蟒蛇。 ?快速语言入门教学,课程,课件,教材,自学,概念 o计算机编程主要概念 ?基本编程 ?定义函数 ?循环() o数据概念 ?列表() ?元组() ?字典() ?集合() ?模块() ?类() ?字符串的对象性质 o程序员编程习惯 o参考资料 计算机编程主要概念# 计算机语言编程的主要内容就这些:数字,文字,循环,公式,变量 ?数字: 1, 2, 3, 5.6, 120, 32.4, 3.1415926, -3, -0.123 ?文字: 你好,我好,你太牛了,很黄很暴力,这类的文字。一般用双引号(“)或者单引号(‘)括起来。术语叫字符串,就是一堆字符,串起来。 ?循环: 循环()就是重复的做一件事。计算机是一个很笨的机器,基本上只会做加,减,乘,除,大于,小于,等于和循环这种简单的工作。编程就是把复杂的问题,拆成简单的单元让它重复。 幸亏有下面讲到的公式,所以很多较复杂的问题已经有了解决方法,我们只是重复的套用别人的解决公式就可以了,不用拆得太细。 语言最大的优势,就是这个语言中包含了大量解决常见问题的公式,你想干的事,基本上都有人帮你干了,你只是需要把他们组织,捆绑起来就可以了。比如下载文件的公式,分析网页内容的公式,压缩文件的公式,处理电子邮件的公式等等。

?公式: 就像数学公式()2= a2 + 2 + b2这种。算的时候带入具体数值,比如:(3+4)2 = 32 + 2*3*4 + 42 = 9+24+16 = 49 。前面的()2就是我们的公式名(当然编程时,我们会用一些比较容易明白的词组做为公式名,比如“和的平方”这种,英语或者拼音都可以),他需要两个参数a,b;后面的a2 + 2 + b2是具体怎么算出来的步骤,这就是我们的公式内容。 在计算机里,公式的术语叫“函数”或者“方法”。我们定义一个函数,就是定义一条公式,用的时候,拿来参数什么的,套一下公式就行了。 为了程序的结构清晰,我们往往会定义很多函数。把复杂的问题分成很多小问题,每个小问题放到一个函数里,然后在解决复杂问题的函数里,使用这些小问题函数解决大问题。 更重要的是我们可以大量的使用别人写好的函数来解决自己的问题。 函数的作用是让程序结构清晰,而且可以在不同的地方重复套用。 ?变量: 就是上面的a,b这种可以代表任何值,可以放进不定值的单词,变量,变量,它代表的量可能会改变。我们用变量来存储我们程序中用到的各种数字,文字,公式。所谓参数,就是定义公式时候用到的变量,就叫参数,换个马甲而已。 换成术语,我们有: 数字 () => 数字 字符串 () => 文字 循环 () => 循环 函数/方法 () => 公式 变量 () => 变量 到这里,基本上编程就没什么可学得了。剩下的就是掌握各种编程语言特定的函数和循环的书写格式,再掌握了别人已经写好的函数的用法,组合起来就得了。 基本编程# 最基本的程序: 存到文件里,然后命令行下输入就可以看到结果了。 这里就用到了函数和字符串,在屏幕上输出一行:世界,你好! 里函数的用法是:函数名(参数1, 参数2) 这里是函数;在屏幕上打印内容,”世界,你好!”是参数,套这个公式用的。 学会怎么用函数了,再学会定义函数的格式,就差不多了。

《Python程序设计》题库

《Python程序设计》题库 一、填空题 第一章基础知识 1、Python安装扩展库常用的是_______工具。(pip) 2、Python标准库math中用来计算平方根的函数是__________。(sqrt) 3、Python程序文件扩展名主要有__________和________两种,其中后者常用于GUI程序。(py、pyw) 4、Python源代码程序编译后的文件扩展名为_________。(pyc) 5、使用pip工具升级科学计算扩展库numpy的完整命令是_________________。(pip install --upgrade numpy) 6、使用pip工具查看当前已安装的Python扩展库的完整命令是_____________。(pip list) 7、在IDLE交互模式中浏览上一条语句的快捷键是__________。(Alt+P) 8、在Python中__________表示空类型。(None)

9、列表、元组、字符串是Python的_________(有序?无序)序列。(有序) 10、查看变量类型的Python内置函数是________________。(type()) 11、查看变量内存地址的Python内置函数是_________________。(id()) 12、以3为实部4为虚部,Python复数的表达形式为___________或________。(3+4j、3+4J) 13、Python运算符中用来计算整商的是_________。(//) 14、Python运算符中用来计算集合并集的是_______。(|) 15、使用运算符测试集合包含集合A是否为集合B的真子集的表达式可以写作_______。(A

2020年《python程序设计》基础知识及程序设计598题WN[含参考答案]

2020年《python程序设计》基础知识及程序设计 598题[含参考答案] 一、填空题 1.代码 print(re.match('^[a-zA-Z]+$','abcDEFG000')) 的输出结果为_________。(None) 2.表达式 r'c:\windows\notepad.exe'.endswith(('.jpg', '.exe')) 的值为_______。(True) 3.正则表达式元字符________用来表示该符号前面的字符或子模式0次或多次出现。(*) 4.正则表达式元字符________用来表示该符号前面的字符或子模式1次或多次出现。(+) 5.已知字符串x = 'hello world',那么执行语句x.replace('hello', 'hi') 之后,x的值为____________。('hello world') 6.表达式 'abcab'.replace('a','yy') 的值为___________。('yybcyyb') 7.表达式 len('中国'.encode('utf-8')) 的值为___________。(6) 8.表达式 [str(i) for i in range(3)] 的值为____________。(['0', '1', '2']) 9.当在字符串前加上小写字母_____或大写字母_____表示原始字符串,不对其中的任何字符进行转义。(r.R) 10.表达式 eval('''__import__('math').sqrt(3**2+4**2)''') 的值为_________。(5.0) 11.表达式 'test.py'.endswith(('.py', '.pyw')) 的值为__________。(True) 12.表达式 'Hello world!'[-4:] 的值为________________。('rld!') 13.假设re模块已导入,那么表达式re.findall('(\d)\\1+', '33abcd112') 的值为___________________。(['3', '1']) 14.表达式 ''.join(re.split('[sd]','asdssfff')) 的值为_______________。('afff')

Python 程序设计快速入门教学

Python 程序设计快速入门教学
Python 的中文意思是巨蟒,大蟒蛇。
? o ? ? ? o ? ? ? ? ? ? ? o o
快速 Python 语言入门教学,课程,课件,教材,自学,概念 计算机编程主要概念 基本编程 定义函数 循环 (loop) Python 数据概念 列表 (list) 元组 (tuple) 字典 (dict) 集合 (set) 模块 (module) 类 (class) 字符串的对象性质 Python 程序员编程习惯 参考资料
计算机编程主要概念#
计算机语言编程的主要内容就这些:数字,文字,循环,公式,变量
? ?
数字: 1, 2, 3, 5.6, 120, 32.4, 3.1415926, -3, -0.123 文字: 你好,我好,你太牛了,很黄很暴力,这类的文字。一般用双引号(“)或者单引号(?) 括起来。术语叫字符串 ,就是一堆字符,串起来。
?
循环: 循环(loop)就是重复的做一件事。计算机是一个很笨的机器,基本上只会做加,减, 乘,除,大于,小于,等于和循环这种简单的工作。编程就是把复杂的问题,拆成简单的单 元让它重复。 幸亏有下面讲到的公式, 所以很多较复杂的问题已经有了解决方法, 我们只是重复的套用别 人的解决公式就可以了,不用拆得太细。 Python 语言最大的优势,就是这个语言中包含了大量解决常见问题的公式,你想干的事, 基本上都有人帮你干了, 你只是需要把他们组织, 捆绑起来就可以了。 比如下载文件的公式, 分析网页内容的公式,压缩文件的公式,处理电子邮件的公式等等。
1

《Python程序设计基础(第2版)》教学大纲(参考)

《Python程序设计基础》教学大纲 院(系、部): 教研室: 日期: 2018年3月20日

目录 一、课程简介 (1) 二、教学目的和要求 (1) 三、教学中应注意的问题 (1) 四、教学内容 (2) 五、教学课时分配 (9) 六、教材与参考书目 (10)

一、课程简介 课程名称:Python程序设计基础课程编号: 课程性质:必修适用专业:非计算机专业 前导课程:无考核方式:考试 建议学时:48+16 二、教学目的和要求 通过本课程的学习,使得学生能够理解Python的编程模式,熟练运用Python 列表、元组、字典、集合等基本数据类型以及相关列表推导式、切片等特性来解决实际问题,熟练掌握Python分支结构、循环结构、函数设计以及类的设计与使用,熟练使用正则表达式处理字符串,熟练使用Python读写文本文件与二进制文件,了解Python程序的调试方法,熟练运用Python编写面向对象程序,掌握使用Python操作SQLite数据库的方法,掌握Python+pandas进行数据处理的基本用法,掌握使用Python+matplotlib进行数据可视化的用法,同时还应培养学生的代码优化与安全编程意识。 三、教学中应注意的问题 Python编程模式中非常重要的一条是代码简单化、问题简单化,同时应保证代码具有较强的可读性。在教学过程中,尽量避免在Python程序中带有其他编程语言的痕迹,要尽量从最简单的角度去思考和解决问题、实现自己的想法和思路,尽量多使用Python内置函数、标准库对象和合适的扩展库对象,保证代码的优雅、简洁,让代码更加Pythonic。 使用Python编程解决问题应充分借鉴和使用成熟的标准库和扩展库,尽量避免自主编写完整的业务逻辑,部分具体操作完全可以使用扩展库来实现,大幅度提高开发效率。例如:如果需要进行排序则直接使用内置函数或方法进行排序,切不可再使用选择法排序、冒泡法排序或堆排序等排序算法来编写代码实现;计算最大公约数应习惯于使用math标准库的gcd()函数;对数据进行随机乱序应使用random标准库中的shuffle()函数;从给定数据集中随机选择元素应使用random标准库中的choice()函数;等等。

《Python程序设计案例教程——从入门到机器学习(微课版)》

《Python应用程序设计》课程教学大纲 一、课程基本信息 中文名称:Python应用程序设计 英文名称:Python Program 学分:2 学时数:32理论学时 二、课程性质、目的与要求 本课程是计算机科学与技术、软件工程、物联网工程、信息与计算科学、电子信息工程、通信工程、自动化、光电信息科学与工程的专业选修课程,在大三上学期开设。课程采用理论与实践应用相结合的教学方式,通过学习Python语法基础、图形用户界面设计等基础知识,掌握Python 在网络编程、数据分析、机器学习与人工智能等领域的应用,能够迅速适应未来的工作与学习。 学生在学习本课程时,应在理解编程语法和编程思想的基础之上,通过课内外多花时间上机编写程序题,实现编程能力的提高。通过本课程的学习,使学生对Python系统有一个全面深入的了解,并能应用Python语言进行实际项目的开发和设计。 三、先修要求 修读条件: 学生需要掌握基础的软件编程语言,了解计算机网络和数据库的基础知识,具备独立开发能力。 先修课程: 无 四、课程基本内容 (一)Python语言快速入门(2学时) 1.教学内容 (1)Python的发展、版本、应用领域和基本特点。(0.5学时) (2)Python的开发环境配置。(重点)(0. 5学时) (3)Python程序简单示例。(重点)(1学时) 2.教学目的及要求

(1)了解Python的发展、版本、应用领域和基本特点。 (2)熟练掌握Python开发环境的配置。 (二)Python语法基础(4学时) 1.教学内容 (1)基本数据类型,列表、元组和字典。(重点)(1学时)(2)顺序语句、条件判断语句。(重点)(1学时) (3)循环语句(重点、难点)(1学时) (4)函数、常用内置函数(重点、难点)(1学时) 2.教学目的及要求 (1)掌握Python的基本程序结构、数据类型。 (2)掌握Python输入输出。 (3)理解Python的变量和动态数据类型。 (4)掌握条件判断结构与应用。 (5)掌握循环结构与应用。 (1)掌握函数定义、函数调用,理解变量作用域。 (三)类与模块(2学时) 1.教学内容 (1)类的定义与类继承。(重点、难点)(1学时) (2)模块的导入和使用、常用Python模块。(重点)(1学时)2.教学目的及要求 (1)掌握类的定义。 (2)掌握模块应用。 (四)图形用户界面设计(4学时) 1.教学内容 (1)窗体容器和组件(重点)(2学时) (2)界面布局管理(1学时) (3)文本框组件(1学时) 2.教学目的及要求 (1)掌握窗体程序的设计方法

Python 程序设计快速入门教学

Python 程序设计快速入门教学Python 的中文意思是巨蟒,大蟒蛇。 ?快速Python 语言入门教学,课程,课件,教材,自学,概念 o计算机编程主要概念 ?基本编程 ?定义函数 ?循环(loop) o Python 数据概念 ?列表(list) ?元组(tuple) ?字典(dict) ?集合(set) ?模块(module) ?类(class) ?字符串的对象性质 o Python 程序员编程习惯 o参考资料 计算机编程主要概念# 计算机语言编程的主要内容就这些:数字,文字,循环,公式,变量 ?数字: 1, 2, 3, 5.6, 120, 32.4, 3.1415926, -3, -0.123 ?文字: 你好,我好,你太牛了,很黄很暴力,这类的文字。一般用双引号(“)或者单引号(‘)括起来。术语叫字符串,就是一堆字符,串起来。 ?循环: 循环(loop)就是重复的做一件事。计算机是一个很笨的机器,基本上只会做加,减,乘,除,大于,小于,等于和循环这种简单的工作。编程就是把复杂的问题,拆成简单的单元让它重复。 幸亏有下面讲到的公式,所以很多较复杂的问题已经有了解决方法,我们只是重复的套用别人的解决公式就可以了,不用拆得太细。 Python 语言最大的优势,就是这个语言中包含了大量解决常见问题的公式,你想干的事,基本上都有人帮你干了,你只是需要把他们组织,捆绑起来就可以了。比如下载文件的公式,分析网页内容的公式,压缩文件的公式,处理电子邮件的公式等等。

?公式: 就像数学公式(a+b)2= a2 + 2ab + b2这种。算的时候带入具体数值,比如:(3+4)2 = 32 + 2*3*4 + 42 = 9+24+16 = 49 。前面的(a+b)2就是我们的公式名(当然编程时,我们会用一些比较容易明白的词组做为公式名,比如“和的平方”这种,英语或者拼音都可以),他需要两个参数a,b;后面的a2 + 2ab + b2是具体怎么算出来的步骤,这就是我们的公式内容。 在计算机里,公式的术语叫“函数”或者“方法”。我们定义一个函数,就是定义一条公式,用的时候,拿来参数a,b什么的,套一下公式就行了。 为了程序的结构清晰,我们往往会定义很多函数。把复杂的问题分成很多小问题,每个小问题放到一个函数里,然后在解决复杂问题的函数里,使用这些小问题函数解决大问题。更重要的是我们可以大量的使用别人写好的函数来解决自己的问题。 函数的作用是让程序结构清晰,而且可以在不同的地方重复套用。 ?变量: 就是上面的a,b这种可以代表任何值,可以放进不定值的单词,变量,变量,它代表的量可能会改变。我们用变量来存储我们程序中用到的各种数字,文字,公式。 所谓参数,就是定义公式时候用到的变量,就叫参数,换个马甲而已。 换成术语,我们有: 数字(number) => 数字 字符串(string) => 文字 循环(loop) => 循环 函数/方法(function/method) => 公式 变量(variable) => 变量 到这里,基本上编程就没什么可学得了。剩下的就是掌握各种编程语言特定的函数和循环的书写格式,再掌握了别人已经写好的函数的用法,组合起来就得了。 基本编程# 最基本的Python程序: 存到文件hello.py 里,然后命令行下输入python hello.py就可以看到结果了。 这里就用到了函数和字符串,在屏幕上输出一行:世界,你好!

Python程序设计-Python语言介绍与入门.doc

Python程序设计-Python语言介绍与入门 Python编程Python于年发布,GuidovanRossum于年在阿姆斯特丹完成了第一次公开发布。 圭多决心开发一种新的脚本解释器来消除圣诞节的无聊。作为美国广播公司语言的一个名称,它继承了Python作为一种语言,因为它是一个英国的幽默剧团:蒙蒂思龙飞行马戏团的fansABC是由圭多设计的一种教学语言。它非常美丽和强大。专为非专业程序员设计的Python现在已经上市。圭多目前是谷歌的主持人。为了对GAEPythonx进行研究,Python于1月发布,主要是为了实现完整的垃圾收集和支持Unicode。 今年1月发布的Python版本与之前的Python源代码不完全兼容。 目前,使用最广泛的版本是最新版本()。Python哲学Python 哲学使用Python的人基本上知道,将它输入到交互式解释器中会显示TimPeters的TheZenofPython。 TheZenofPython,bytheimpersallablulistberthanuglyexplicitbetterthangimplicitsimpleisbette rstanccomplexplexclexsbetterthancomplicatedflatisberthannestedssparseis be,terthanddenseredabilitycountspecalcasaren # tspecialenoughtobbreaktherulesalthougpractitalitybeatpropertyErrorsshou ldneverpasssilentlyupleusexplicitlysilencedinthefambiguity,Refusethetempationtoguesshereshoulbeoneandpreferrableyonlyobviousw

相关文档
最新文档