内部资料《Python程序设计》教学大纲安徽大学计算机科学与技术学院2015年10月内部资料课程性质与设置目的要求(前言)《Python程序设计》课程是计算机科学与技术学院各专业的专业选修课程。Python是一门开源的高级动态编程语言,支持命令式编程、函数式编程、面向对象程序设计,语法简洁清晰,并且拥有大量功能丰富而强大的标准库和扩展库。本课程将从Python语言的实现机制入手,结合示例程序和上机实验,较为系统地介绍Python语言的主要特征和编程技术。设置本课程的目的是:使学习者在全面了解Python技术历史、现状与发展趋势的基础上,系统掌握Python基本概念、编程思想以及程序设计技术,具备熟练的Python编程技能和面向对象软件设计技术思想,完成本课程的学习后能够熟练地综合应用Python技术和面向对象的思想编写程序解决现实生活中的问题,最终提高程序设计水平和计算机应用能力,从而能胜任企业软件研发以及科研院所的研发、教学任务。学习本课程的要求是:学习者应理解Python的编程模式,熟练运用Python列表、元组、字典、集合等基本数据类型以及相关列表推导式、切片等特性来解决实际问题,熟练掌握Python分支结构、循环结构、函数设计以及类的设计与使用,熟练使用正则表达式处理字符串,同时掌握不同领域的Python扩展模块,并能够解决实际问题。先修课程要求:无本课程计划34学时,2学分。选用教材:董付国.Python程序设计(第2版).北京:清华大学出版社,2016.5.考核方法:考查内部资料教学进程安排表:周次学时数教学主要内容教学环节备注13Python的安装与使用Python扩展库的管理Python中的数据类型讲课23Python中的内置函数、基本输入输出Python代码编写规范Python文件名和程序运行讲课33Python中的列表使用讲课43Python中的元组、字典及集合的使用讲课53选择和循环结构讲课63字符串和正则表达式讲课73函数的设计与使用讲课83类的定义与使用类的方法和属性讲课内部资料93文本文件的基本操作二进制文件操作文件操作和目录操作讲课103异常处理结构与程序调试GUI编程讲课113+1网络程序设计多线程编程课程随堂测试讲课+测试内部资料第一章基础知识一、学习目的Python语言的发展过程、安装及简单使用;Python程序设计中的基本知识;Python代码的编写规范;Python文件名的要求;Python程序的运行方式;编写自己的包以及基本示例。本章计划6学时。二、课程内容1.0Python是一种怎样的语言Python是一门跨平台、开源、免费的解释型高级动态编程语言,同时也支持伪编译将Python源程序转换为字节码来优化程序和提高运行速度。Python支持命令式编程、函数式编程,完全支持面向对象程序设计,语法简洁清晰,并且拥有大量的几乎支持所有领域应用开发的成熟扩展库。1.1如何选择Python版本多版本共存与切换简便方法:更改系统环境变量path查看已安装版本的方法有时候可能需要同时安装多个不同的版本,并根据不同的开发需求在两个版本之间进行切换。1.2Python安装与简单使用默认编程环境:IDLE1.3使用pip管理第三方包Python2中需要单独安装下载地址:安装方法:cmd==pythonget-pip.py用法示例Python3安装包中已默认包含pip1.4.1Python的对象模型对象是python语言中最基本的概念,在python中处理的每样东西都是对象。python中有许多内置对象可供编程者使用,内置对象可直接使用,如数字、字符串、列表、del等;非内置对象需要导入模块才能使用,如正弦函数sin(x),随机数产生函数random()等。常用内置对象1.4.2Python变量在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()函数来实现的。尽管形式一样,Python2.x和Python3.x对该函数的解释略有不同。1.4.9模块的使用Python默认安装仅包含部分基本或核心模块,但用户可以安装大量的扩展模块,pip是管理模块的重要工具import模块名1.5Python代码规范(1)缩进(2)注释(3)每个import只导入一个模块内部资料(4)如果一行语句太长,可以在行尾加上\来换行分成多行,但是更建议使用括号来包含多行内容。(5)必要的空格与空行(6)适当使用异常处理结构进行容错,后面将详细讲解。(7)软件应具有较强的可测试性,测试与开发齐头并进。1.6Python文件名1.7Python脚本的“__name__”属性1.8编写自己的包与模块包可以看做处于同一目录中的模块。1.9Python快速入门问题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、notin、is、isnot逻辑运算符:and、or、not,注意短路求值位运算符:~、&、|、^、、3.2选择结构单分支选择结构双分支结构多分支结构选择结构的嵌套选择结构应用3.3循环结构for循环与while循环Python提供了两种基本的循环结构语句——while语句、for语句。while循环一般用于循环次数难以提前确定的情况,也可以用于循环次数确定的情况;for循环一般用于循环次数可以提前确定的情况,尤其是用于枚举序列或迭代对象中的元素;一般优先考虑使用for循环。相同或不同的循环结构之间都可以互相嵌套,实现更为复杂的逻辑。循环结构的优化为了优化程序以获得更高的效率和运行速度,在编写循环语句时,应尽量减少循环内部不必要的计算,将与循环变量无关的代码尽可能地提取到循环之外。对于使用多重循环嵌套的情况,应尽量减少内层循环中不必要的计算,尽可能地向外提。3.4break和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个或多个字符+: