|
|
@@ -1,14 +1,14 @@
|
|
|
-## Python从新手到大师
|
|
|
+## Python教学大纲
|
|
|
|
|
|
### Python应用领域和就业形势分析
|
|
|
|
|
|
-Python语言自身的优势:优雅、明确、简单。
|
|
|
+简单的说,Python是一个“优雅”、“明确”、“简单”的编程语言。
|
|
|
|
|
|
- - 学习曲线低,尤其适合非专业人士
|
|
|
- - 开源软件,大量的三方库和强大的生态圈
|
|
|
+ - 学习曲线低,适合非专业人士
|
|
|
+ - 开源软件,强大的生态圈
|
|
|
- 解释型语言,完美的平台可移植性
|
|
|
- - 支持两种主流的编程范式,面向对象和函数式编程
|
|
|
- - 可扩展性和可嵌入性,可以调用C/C++代码反之亦可以
|
|
|
+ - 支持面向对象和函数式编程
|
|
|
+ - 可扩展性,能调用C/C++代码
|
|
|
- 代码规范程度高,可读性强
|
|
|
|
|
|
目前几个比较流行的领域,Python都有用武之地。
|
|
|
@@ -43,7 +43,7 @@ Python的就业市场分析:相同工作职位和要求,薪资普遍高3k-5k
|
|
|
|
|
|

|
|
|
|
|
|
-给初学者的几个建议:一个老司机的忠告。
|
|
|
+给初学者的几个建议(老司机的忠告):
|
|
|
|
|
|
- Make English as your working language.
|
|
|
- Practice makes perfect.
|
|
|
@@ -79,73 +79,77 @@ Python的就业市场分析:相同工作职位和要求,薪资普遍高3k-5k
|
|
|
|
|
|
- 循环结构的应用场景 - 条件 / 缩进 / 代码块 / 流程图
|
|
|
- while循环 - 基本结构 / break语句 / continue语句
|
|
|
-- for循环 - 基本结构 / range类型 / 在循环中使用分支结构 / 提前结束程序
|
|
|
-- 应用案例 - 1~100求和 / 求阶乘 / 判断素数 / 求最大公约数和最小公倍数 / 打印三角形图案
|
|
|
+- for循环 - 基本结构 / range类型 / 循环中的分支结构 / 嵌套的循环 / 提前结束程序
|
|
|
+- 应用案例 - 1~100求和 / 判断素数 / 猜数字游戏 / 打印九九表 / 打印三角形图案 / 猴子吃桃 / 百钱百鸡
|
|
|
|
|
|
#### Day05 - [总结和练习](./Day05/练习.md)
|
|
|
|
|
|
-- 基础练习 - 水仙花数 / 完美数 / 打印1~100之间的素数 / 九九表 / Fibonacci数列 / 回文数 / 百钱百鸡
|
|
|
-- 综合练习 - 猜数字游戏 / Craps赌博游戏
|
|
|
+- 基础练习 - 水仙花数 / 完美数 / 五人分鱼 / Fibonacci数列 / 回文素数
|
|
|
+- 综合练习 - Craps赌博游戏
|
|
|
|
|
|
-#### Day06 - [列表和元组](./Day06/列表和元组.md)
|
|
|
+#### Day06 - [函数和模块的使用](./Day08/函数和模块的使用.md)
|
|
|
|
|
|
+- 函数的作用 - 代码的坏味道 / 用函数封装功能模块
|
|
|
+- 定义函数 - def语句 / 函数名 / 参数列表 / return语句 / 调用自定义函数
|
|
|
+- 调用函数 - Python内置函数 / 导入模块和函数
|
|
|
+- 函数的参数 - 默认参数 / 可变参数 / 关键字参数(\*) / 命名关键字参数(\*)
|
|
|
+- 函数的返回值 - 没有返回值 / 返回单个值 / 返回多个值(\*)
|
|
|
+- 作用域问题 - 局部作用域 / 嵌套作用域 / 全局作用域 / 内置作用域 / 和作用域相关的关键字
|
|
|
+- 用模块管理函数 - 模块的概念 / 用自定义模块管理函数 / 命名冲突的时候会怎样(同一个模块和不同的模块)
|
|
|
+
|
|
|
+> **说明:**用\*标记的内容建议放到第8天再讲,因为讲完列表、元组、字典等内容后学生才更容易理解这些特殊的用法。
|
|
|
+
|
|
|
+#### Day07 - [字符串和常用数据结构](./Day07/字符串和常用数据结构.md)
|
|
|
+
|
|
|
+- 字符串的使用 - 计算长度 / 下标运算 / 切片 / 常用方法
|
|
|
- 列表基本用法 - 定义列表 / 用下表访问元素 / 下标越界 / 添加元素 / 删除元素 / 修改元素 / 切片 / 循环遍历
|
|
|
- 列表常用操作 - 连接 / 复制(复制元素和复制数组) / 长度 / 排序 / 倒转 / 查找
|
|
|
- 生成列表 - 使用range创建数字列表 / 生成表达式 / 生成器
|
|
|
- 元组的使用 - 定义元组 / 使用元组中的值 / 修改元组变量 / 元组和列表转换
|
|
|
-- 基础练习 - 列表找最大元素 / 统计考试成绩的平均分 / 跑马灯效果 / Fibonacci数列 / 杨辉三角 / 学生成绩统计表
|
|
|
-- 综合练习 - 双色球随机选号
|
|
|
-
|
|
|
-#### Day07 - [集合和字典](./Day07/集合和字典.md)
|
|
|
-
|
|
|
- 集合基本用法 - 集合和列表的区别 / 创建集合 / 添加元素 / 删除元素 / 清空
|
|
|
- 集合常用操作 - 交集 / 并集 / 差集 / 对称差 / 子集 / 超集
|
|
|
- 字典的基本用法 - 字典的特点 / 创建字典 / 添加元素 / 删除元素 / 取值 / 清空
|
|
|
- 字典常用操作 - keys()方法 / values()方法 / items()方法 / setdefault()方法
|
|
|
-- 数据结构和算法 - 常用数据结构简介 / 数据结构和算法应用举例
|
|
|
-- 综合练习 - 井字棋游戏
|
|
|
-
|
|
|
->**说明:**此处还没有接触到面向对象编程和函数的概念,在讲授该知识点时可以先对这两个概念稍作说明,也可以先让学生接受这种语法稍后再反过来推敲相关的概念,学生可能对什么时候该调用函数,什么时候应该使用方法产生疑问,这个需要进行强调。另外一种授课的顺序是先讲函数和面向对象的入门知识,再讲解如何使用列表、集合、字典、元组这些Python内置的类型。
|
|
|
-
|
|
|
-#### Day08 - [函数基础](./Day08/函数基础.md)
|
|
|
+- 基础练习 - 跑马灯效果 / 列表找最大元素 / 统计考试成绩的平均分 / Fibonacci数列 / 杨辉三角
|
|
|
+- 综合案例 - 双色球选号 / 井字棋
|
|
|
|
|
|
-- 函数的作用 - 代码的坏味道 / 用函数封装功能模块
|
|
|
-- 定义函数 - def语句 / 函数名 / 参数列表 / return语句 / 调用自定义函数
|
|
|
-- 调用函数 - Python内置函数 / 导入常用模块和常用函数
|
|
|
-- 函数的参数 - 默认参数 / 可变参数 / 关键字参数 / 命名关键字参数
|
|
|
-- 函数的返回值 - 没有返回值 / 返回单个值 / 返回多个值
|
|
|
-- 作用域 - 局部作用域 / 全局作用域 / global语句
|
|
|
-
|
|
|
-#### Day09 - [函数的应用和函数式编程](./Day09/函数的应用和函数式编程.md)
|
|
|
+#### Day08 - [函数的高级用法](./Day08/函数的高级用法.md)
|
|
|
|
|
|
+- 遗留问题 - 关键字参数 / 命名关键字参数 / 返回多个值
|
|
|
+-
|
|
|
- 函数的递归调用 - 递归定义 / 递归公式 / 收敛条件 / 用递归解决实际问题
|
|
|
- 实现常用工具函数 - 生成指定长度的验证码 / 获取文件的后缀名 / 生成随机文件名
|
|
|
-- 用模块管理函数 - 模块的概念 / 用自定义模块管理函数 / 导入模块和特定函数 / 第三方模块介绍
|
|
|
- 高阶函数 - 函数名也是变量 / 将函数传入函数 / 利用高阶函数实现代码的解耦合 / 匿名函数(Lambda函数) / 包装器(代理模式)
|
|
|
- 函数返回函数 - 用函数做返回值 / 闭包
|
|
|
- 偏函数和柯里化 - 偏函数的意义 / 使用partial函数创建偏函数 / 柯里化的概念
|
|
|
|
|
|
->**说明:**函数式编程相关的内容属于比较尴尬的知识点,需要做一个简要的介绍,但是对学生来说暂时是用不上这些知识的,因此不要花太多的时间去纠结这些内容,让学生知道函数可以接受函数作为参数也可以返回函数即可,否则大多数学生一定是懵的。
|
|
|
+>**说明:**函数式编程相关的内容属于比较尴尬的知识点,需要做一个简要的介绍,但是对学生来说暂时是用不上这些知识的,因此不要花太多的时间去纠结这些内容,事实上Python语言对函数式编程的支持也是非常有限的,让学生知道函数可以接受函数作为参数也可以返回函数就已经很足够了,如果讲得太深大多数学生一定是懵的。
|
|
|
|
|
|
-#### Day10 - [面向对象基础](./Day10/面向对象基础.md)
|
|
|
+#### Day09 - [面向对象基础](./Day10/面向对象基础.md)
|
|
|
|
|
|
- 类和对象 - 什么是类 / 什么是对象 / 面向对象其他相关概念
|
|
|
- 定义类 - 基本结构 / 属性和方法 / 构造器 / 析构器 / \_\_str\_\_方法
|
|
|
- 使用对象 - 创建对象 / 给对象发消息
|
|
|
- 面向对象的四大支柱 - 抽象 / 封装 / 继承 / 多态
|
|
|
+- 基础练习 - 定义学生类 / 定义时钟类 / 定义图形类 / 定义汽车类
|
|
|
+
|
|
|
+> **说明:**面向对象基础部分一定要跟学生进行大量的互动,帮助学生理解类和对象的概念,面向对象编程的两步走(创建对象+发消息)和三步走模式(定义类+创建对象+发消息),可以让学生自己列举出能想到的类和对象的例子,并且在讲完本章内容将自己想到的例子变成代码。
|
|
|
+
|
|
|
+#### Day10 - [总结和练习](./Day10/练习.md)
|
|
|
+
|
|
|
- 综合案例 - 奥特曼打小怪兽 / 扑克游戏
|
|
|
|
|
|
#### Day11 - [面向对象高级](./Day11/面向对象高级.md)
|
|
|
|
|
|
- 属性 - 类属性 / 实例属性 / 属性访问器 / 属性修改器 / 属性删除器 / 使用\_\_slots\_\_
|
|
|
-
|
|
|
-
|
|
|
- 类中的方法 - 实例方法 / 类方法 / 静态方法
|
|
|
- 运算符重载 - \_\_add\_\_ / \_\_sub\_\_ / \_\_or\_\_ /\_\_getitem\_\_ / \_\_setitem\_\_ / \_\_len\_\_ / \_\_repr\_\_ / \_\_gt\_\_ / \_\_lt\_\_ / \_\_le\_\_ / \_\_ge\_\_ / \_\_eq\_\_ / \_\_ne\_\_ / \_\_contains\_\_
|
|
|
- 类(的对象)之间的关系 - 关联 / 继承 / 依赖
|
|
|
- 继承和多态 - 什么是继承 / 继承的语法 / 调用父类构造器 / 方法重写 / 类型判定 / 多重继承 / 菱形继承(钻石继承)和C3算法
|
|
|
- 综合案例 - 工资结算系统 / 图书自动折扣系统 / 自定义分数类
|
|
|
|
|
|
+> **说明:**菱形继承和C3算法方面的内容可以根据实际授课情况进行取舍,因为与其把时间花在一些学生暂时难以理解的知识点上,还不如用这些时间让学生通过大量的练习理解面向对象的意义。
|
|
|
+
|
|
|
#### Day12 - [文件和异常](./Day12/文件和异常.md)
|
|
|
|
|
|
- 读文件 - 读取整个文件 / 逐行读取 / 文件路径
|
|
|
@@ -227,7 +231,7 @@ Python的就业市场分析:相同工作职位和要求,薪资普遍高3k-5k
|
|
|
- NoSQL - 非关系型数据库的概念 / 非关系型数据库的分类 / 非关系型数据库的应用场景
|
|
|
- MongoDB和Redis - 安装和使用MongoDB / MongoDB中的基本概念 / 安装和使用Redis / Redis中的数据类型 / 使用PyMongo操作MongoDB / 使用redis模块操作Redis
|
|
|
|
|
|
-> **说明:**在时间不充足的情况下建议将NoSQL的知识转移到后面的Web项目优化中进行,尤其是涉及到缓存和非结构化数据的处理时候再引入NoSQL的东西学生可能更容易理解和接受,而且强烈建议让学生在阿里云的Linux服务器上安装redis和mongodb,这样在也可以让学生相互协作配置这些服务的主从模式和集群模式,从这一点上来考虑在一阶段讲解这些内容也会显得很苍白无力。
|
|
|
+> **说明:**在时间不充足的情况下建议将NoSQL的知识转移到后面的Web项目优化中进行,尤其是涉及到缓存和非结构化数据的处理时候再引入NoSQL的东西学生可能更容易理解和接受,而且强烈建议让学生在阿里云的Linux服务器上安装redis和mongodb,这样在也可以让学生相互协作配置这些服务的主从模式和集群模式。
|
|
|
|
|
|
#### Day25 - [总结和考试](./Day25/考试.md)
|
|
|
|