非计算机专业《Python程序设计基础》教学参考大纲

《Python程序设计基础》

一、 课程简介

二、 教学目的和要求

三、 教学中应注意的问题

四、 教学内容

五、 教学课时分配

六、 教材与参考书目

一、 课程简介

课程名称:Python程序设计基础

课程编号:**********

课程性质:必修

适用专业:非计算机专业

前导课程:无

考核方式:考试

建议学时:48+16(可根据实际需要进行调整)

建议学期:2、4、5

二、 教学目的和要求

通过本课程的学习,使得学生能够理解Python的编程模式(命令式编程、函数式编程),熟练运用Python运算符、内置函数以及列表、元组、字典、集合等基本数据类型和相关列表推导式、切片等特性来解决实际问题,熟练掌握Python分支结构、循环结构、函数设计以及类的设计与使用,熟练使用字符串方法,适当了解正则表达式,熟练使用Python读写文本文件,适当了解二进制文件操作,了解Python程序的调试方法,了解Python面向对象程序设计模式,掌握使用Python操作SQLite数据库的方法,掌握Python+pandas进行数据处理的基本用法,掌握使用Python+matplotlib进行数据可视化的用法,同时还应培养学生的代码优化与安全编程意识。

在教学和学习过程中,应充分发挥Python语言的优势,从最简单、最直观的思路出发,尽快解决问题。不建议在内存地址或类似的底层细节上花费太多时间。

三、 教学中应注意的问题

Python编程模式中非常重要的一条是代码简单化、问题简单化,同时应保证代码具有较强的可读性。在教学过程中,尽量避免在Python程序中带有其他编程语言的痕迹,要尽量从最简单的角度去思考和解决问题、实现自己的想法和思路,尽量多使用Python内置函数、标准库对象和合适的扩展库对象,保证代码的优雅、简洁,让代码更加Pythonic。

使用Python编程解决问题应充分借鉴和使用成熟的标准库和扩展库,尽量避免自主编写完整的业务逻辑,部分具体操作完全可以使用扩展库来实现,大幅度提高开发效率。例如:如果需要进行排序则直接使用内置函数sorted()或列表的sort()方法进行排序,切不可再使用选择法排序、插入法排序、冒泡法排序、快速排序或堆排序等排序算法来编写代码实现;计算最大公约数应习惯于使用math标准库的gcd()函数,而不应该自己编写代码实现辗转相除法的计算;对数据进行随机乱序应使用random标准库中的shuffle()函数;从给定数据集中随机选择元素应使用random标准库中的choice()函数;等等。

四、 教学内容

第1章 Python概述

1.1 Python是这样一种语言

教学重点:Python的命令式编程和函数式编程。

1.2 Python版本之争

教学重点:系统环境变量的设置。

1.3 Python编程规范与代码优化建议

教学重点:缩进,空格与空行,不同数据类型的选择对程序运行效率的影响。

1.4 Anaconda3开发环境的安装与使用

1.5 安装扩展库的几种方法

教学重点:熟练使用pip安装和管理Python扩展库。

1.6 标准库与扩展库中对象的导入与使用

教学重点:三种导入方法之间的区别。

1.7 __name__属性的作用

教学重点:不同方式使用Python程序时__name__属性的值。

第2章 运算符、表达式与内置对象

2.1 Python常用内置对象

教学重点:不需要事先声明变量名及其类型,变量命名规范,数字、字符串、列表、元组、字典、集合的简单使用,数字大小无限制。

2.2 Python运算符与表达式

教学重点:同一个运算有不同含义,关系运算符和逻辑运算符的惰性求值特点。

2.3 Python关键字简要说明

2.4 Python常用内置函数用法精要

教学重点:很多函数有基本用法和高级用法,注意这些函数的可选参数;理解函数式编程的模式。

教学难点:函数式编程。

2.5 精彩案例赏析

第3章 详解Python序列结构

3.1 列表

教学重点:列表对象的创建与删除,其他类型到列表的转换,内置range(),使用+运算符、append()方法、extend()方法、insert()方法为列表增加元素,使用del命令、pop()方法、remove()方法删除列表元素,使用下标访问列表元素,使用index()方法获取列表元素下标,使用count()方法获取列表元素出现次数,有序序列的双向索引,使用成员资格判断运算符in判断列表中是否存在指定元素,使用切片访问、修改、删除、增加列表元素,列表排序方法sort()与内置排序函数sorted()以及列表逆序方法reverse()与内置逆序函数reversed(),len()、max()、min()、sum()、zip()、enumerate()等内置函数对列表对象的操作,使用列表推导式快速生成列表。

教学难点:自动内存管理,切片操作,列表推导式,排序方法的key参数。

3.2 元组

教学重点:元组对象的创建与删除,其他类型到元组的转换,元组与列表的区别,生成器推导式。

教学难点:元组与列表的区别,元组的不可变特点,生成器表达式与列表推导式的效率比较。

3.3 字典

教学重点:字典对象的创建与删除,字典元素、键、值的访问方法,字典元素的添加与修改,使用字典对象的get()方法获取指定键对应的值,有序字典对象的使用,使用字典来计数,有序字典。

教学难点:字典对象的get()方法,访问字典对象时可以使用键作为下标,字典对象的键必须为不可变对象。

3.4 集合

教学重点:集合对象的创建与删除,其他类型数据到集合的转换,使用add()方法为集合增加元素,使用pop()和remove()方法删除元素,使用clear()方法清空集合,集合的并、交、差以及对称差等运算,使用集合来提取序列中的唯一元素。

教学难点:Python运算符的多重含义,集合运算。

3.5 序列解包的多种形式和用法

教学重点:序列解包的本质——对多个变量同时赋值;序列解包的要求——等号右侧值的数量与等号左侧变量的数量一致。

教学难点:多个变量同时赋值。

第4章 程序控制结构

4.1 条件表达式

教学重点:Python关系运算符可以连用,枚举序列元素时多使用成员测试运算符in,算数运算符/和//的区别,任何合法的Python表达式都可以作为条件表达式,False、0(或0.0、0j等)、空值None、空列表、空元组、空集合、空字典、空字符串、空迭代对象作为条件表达式与False等价。

教学难点:关系运算符可以连用,Python中的False等价值,几乎所有Python表达式都可以作为条件表达式来使用。

4.2 选择结构

教学重点:单分支选择结构、双分支选择结构、多分支选择结构、选择结构的嵌套,条件表达式后必须有冒号且换行缩进后开始写代码块,elif关键字表达else if的意思。

教学难点:缩进体现代码的业务逻辑。

4.3 循环结构

教学重点:for循环、while循环,range对象在循环中的使用,成员测试符in与序列解包在循环语句中的使用,带有else子句的循环结构,循环代码的优化,break与continue语句的作用。

教学难点:带有else子句的循环结构,循环代码的优化。

4.4 精彩案例赏析

教学重点:体会Pythonic的含义,感受Python程序的美。

第5章 函数

5.1 函数定义与使用

教学重点:Python函数的定义形式,def关键字,不需要声明函数的参数类型和返回值类型,括号不可以省略,冒号必须有。函数嵌套定义。函数递归调用。

5.2 函数参数

教学重点:形参与实参的概念,在函数内部直接修改形参不会影响实参。位置参数、默认值参数、关键参数和长度可变参数的用法。传递参数时的序列解包。

5.3 变量作用域

教学重点:在函数内如果只引用某个变量的值而没有为其赋新值,该变量为(隐式的)全局变量;如果在函数内任意位置有为变量赋新值的操作,该变量即被认为是(隐式的)局部变量,除非在函数内显式地用关键字global进行声明。

教学难点:局部作用域与全局作用域的区别,在函数内部定义全局变量的方法。

5.4 lambda表达式

教学重点:使用lambda表达式声明匿名函数和命名函数,在lambda表达式中调用函数,把lambda表达式作为函数参数。

教学难点:lambda表达式作为其他函数的参数。

5.5 生成器函数设计要点

教学重点:yield语句和return语句的区别,生成器对象的惰性求值特点。

教学难点:生成器对象的惰性求值。

5.6 精彩案例赏析

第6章 面向对象程序设计

6.1 类的定义与使用

教学重点:Python类的定义,class关键字,创建对象的方法,通过对象访问成员的方法。

6.2 数据成员与成员方法

教学重点:私有成员与公有成员,数据成员与成员方法,类方法与静态方法,属性的定义与使用,混入机制。

6.3 继承与多态

教学重点:继承的作用与Python实现,多态的概念。

6.4 特殊方法与运算符重载

教学重点:构造函数__init__(),析构函数__del__(),__add__()、__mul__()、__pow__()及其他Python类特殊方法与运算符的对应关系。

教学难点:特殊方法与运算符及内置函数的对应关系。

6.5 精彩案例赏析

第7章 字符串

7.1 字符串编码格式简介

教学重点:ASCII、UTF8、GBK的区别。

7.2 转义字符与原始字符串

教学重点:转义字符的用法,字符串前面加字母r的含义。

7.3 字符串格式化

教学重点:format()方法,格式化的字符串常量。

7.4 字符串常用操作

教学重点:使用find()、index()、count()等方法以及关键字in确定字符串中是否包含另一个字符串,使用split()、partition()方法对字符串进行切分,使用join()方法连接字符串,使用replace()、translate()对字符串进行“修改”,使用strip()方法删除字符串开始、结束或两侧的指定字符,使用lower()、upper()、capitalize()、title()、swapcase()等方法进行大小写转换,使用startswith()、endswith()方法测试字符串是否以另一个字符串开始或结束,使用center()、ljust()、rjust()等方法对字符串进行排版。

7.5 字符串常量

7.6 中英文分词

教学重点:Python扩展库jieba和snownlp的用法。

7.7 汉字到拼音的转换

教学重点:Python扩展库pypinyin的用法。

7.8 精彩案例赏析

第8章 正则表达式(选讲)

8.1 正则表达式语法

教学重点:正则表达式基本语法与扩展语法,常用正则表达式的写法。

8.2 直接使用正则表达式模块re处理字符串

教学重点:compile()、match()、search()、findall()、split()、sub()、escape()等re模块常用方法。

8.3 使用正则表达式对象处理字符串

教学重点:正则表达式对象方法的用法。

8.4 match对象

教学重点:match对象方法的用法。

8.5 精彩案例赏析

第9章 文件内容操作

9.1 文件操作基本知识

教学重点:文本文件与二进制文件的概念与访问方法的区别,文件对象,open()方法以及flush()、close()、read()、readline()、readlines()、tell()、write()、writelines()等常用方法,上下文管理语句with的优点与用法。

教学难点:文件操作三步骤:打开文件、操作文件、关闭文件。

9.2 文本文件基本操作案例精选

教学重点:文本文件读写方法,read()、write()、seek()等文件对象常用方法的运用。

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

教学重点:二进制文件读写方式,对象序列化,pickle、struct、shelve等模块的用法,Excel、Word等常见类型文件的操作。

第10章 文件与文件夹操作

10.1 os模块

教学重点:文件夹遍历。

10.2 os.path模块

教学重点:路径类型判断,路径连接,获取文件属性。

10.3 shutil模块

教学重点:复制文件,压缩与解压缩,删除目录树。

10.4 精彩案例赏析

第11章 异常处理结构与单元测试(选讲)

11.1 异常处理结构

教学重点:异常的概念与表现形式,Python内置异常类层次结构,常见异常处理结构,断言与上下文管理语句。

11.2 单元测试

教学重点:单元测试的意义和目的,标准库unittest的用法。

第12章 数据库应用开发(选讲)

12.1 使用Python操作SQLite数据库

教学重点:sqlite3模块基本用法,Connection对象,Cursor对象,常用SQL语句。

12.2 使用Python操作其他关系型数据库

教学重点:Access、SQL Server、MySQL等数据库的接口。

12.3 操作MongoDB数据库

教学重点:NoSQL的含义,MongoDB数据库的配置和使用。

第13章 数据分析与科学计算可视化(选讲)

13.1 扩展库numpy简介

教学重点:数组运算,矩阵运算。

13.2 科学计算扩展库scipy

教学重点:constants模块,special模块,signal模块,ndimage模块。

13.3 扩展库pandas简介

教学重点:DataFrame基本操作,缺失值、重复值、异常值处理,数据差分,读写文件。

13.4 统计分析标准库statistics用法简介

13.5 matplotlib

教学重点:绘制折线图、散点图、饼状图、柱状图,设置图例,绘制三维图形。

13.6 创建词云

教学重点:扩展库wordcloud的用法。

五、 教学课时分配

教学课时分配表(参考)

章 节 名 称

课堂学时

实验学时

第1章 Python概述

2

第2章 运算符、表达式与内置对象

4

2

第3章 Python数据结构

6

2

第4章 程序控制结构

4

2

第5章 函数

4

2

第6章 面向对象程序设计

4

第7章 字符串

6

2

第8章 正则表达式(选讲)

2

第9章 文件内容操作

4

2

第10章 文件与文件夹操作

2

第11章 异常处理结构与单元测试(选讲)

1

第12章 数据库应用开发(选讲)

3

2

第13章 数据分析与科学计算可视化(选讲)

6

2

合计

48

16

六、 教材与参考书目

1. 教材:董付国.《Python程序设计基础(第2版)》,清华大学出版社,2018

2. 参考书目:

l 董付国.《Python程序设计(第2版)》,清华大学出版社,2016

l 董付国.《Python可以这样学》,清华大学出版社,2017

l 董付国.《Python程序设计开发宝典》,清华大学出版社,2017

l 董付国.《玩转Python轻松过二级》,清华大学出版社,2018

l 张颖,赖勇浩著.《编写高质量代码——改善Python程序的91个建议》.机械工业出版社,2014

l 杨佩璐,宋强等编著.《Python宝典》.电子工业出版社,2014

l 张若愚著.《Python科学计算(第2版)》.清华大学出版社,2017

原文发布于微信公众号 - Python小屋(Python_xiaowu)

原文发表时间:2018-05-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏工科狗和生物喵

【计算机本科补全计划】《C++ Primer》:类型转换

正文之前 学习,不如爆文?反正晚上也不会学习,某个家伙也对我爱理不理的!!!!(这才是最骚的吧),刚好欠了 C++ Primer太多烂账了。不如赶紧还了! 对了...

2888
来自专栏郭霖

Android数据库高手秘籍(七)——体验LitePal的查询艺术

经过了多篇文章的学习,我们已经把LitePal中的绝大部分内容都掌握了。现在回想起来了,增删改查四种操作中的前三种我们都已经学完了,不知道现在使用起数据库来,你...

2686
来自专栏java一日一条

Web性能优化系列:10个JavaScript性能提升的技巧

Nicholas Zakas是一位 JS 大师,Yahoo! 首页的前端主程。他是《高性能 Javascript》的作者,这本书值得每个程序员去阅读。

512
来自专栏女程序员的日常

虚函数&多态

对于经常被问到的虚函数和多态的问题,发现百度百科回答得十分详细,所以自己在百度百科上的解释进行总结 一、虚函数 (1)虚函数简介:在某基类中声明为virtua...

2001
来自专栏java思维导图

MySQL 的索引是什么?怎么优化?

索引类似大学图书馆建书目索引,可以提高数据检索的效率,降低数据库的IO成本。MySQL在300万条记录左右性能开始逐渐下降,虽然官方文档说500~800w记录,...

973
来自专栏猿人谷

浅谈C/C++中的指针和数组(一)

                                                       浅谈C/C++中的指针和数组(一)       指...

1905
来自专栏blackheart的专栏

[程序设计语言]-[核心概念]-04:数据类型

0. 概述 为何高级语言需要类型系统这个概念?在汇编时代是没有完整的数据类型系统的,结构化编程引入了结构化的控制流、为结构化设计的子程序,随之这种结构化的代码所...

1726
来自专栏苦逼的码农

JVM(1)---虚拟机在运行期的优化策略

当我们的虚拟机在运行一个java程序的时候,它可以采用两种方式来运行这个java程序:

793
来自专栏Python专栏

10个Python面试常问的问题

1314
来自专栏web前端教室

看过必懂!JavaScript的继承

最近刚把Js高级程序设计看了一遍,仔细的读了其中的第6章的第6.3节-继承。今天写出来跟大家分享一下,顺便也加深一下自己的理解。

631

扫描关注云+社区