Python课程规划
cbowen

每节课的时间分布:

课前回顾:10min

新课学习:35min

实战练习:30min

课外拓展(仅针对基础较好的):5min

本节总结+课后作业:10min


第一阶段(一级)

本阶段主要让学生了解什么是代码编程,如何理解和接受这门语言,注重让学生能够独立写出完整的可以正常运行的代码

导入课

通过可视化程序激发学生们的兴趣,通过turtle等模块展示花瓣的绘制、在线音乐的爬取、qq红包一笔画破解等来吸引同学们的兴趣。

认识Python

为什么要学习Python,Python语言的特点,Python与其他编程语言的区别,学会Python能干哪些事。

Python与Scratch的衔接

找不同,回顾Scratch里面的基本积木,通过简单的例子来说明Python与Scratch的共通 的地方。

环境的安装与基本代码结构展示

Python的学习注重逻辑思维的培养,想同学们强调学习的过程要注重细节,初期代码可以不美观,但要注意Python程序的缩进结构。

学会简单的print、input函数的使用。

单行注释 #

多行注释 ```这是注释```

多行代码 用\转义回车键

认识几种简单的数据类型

整型 浮点型 字符串 列表 元组 字典 布尔型

数据类型的强制转换

变量

变量的赋值 =,即

变量名 = 变量值

多个变量同时赋值

变量可以存储哪些东西?

整型、浮点型、字符串、布尔型、对象

变量的命名规则?

下划线或英文字母开头,不可与关键字重复

保留字

变量名命名不可使用保留字

运算符

算数运算符

+ - * / // %

比较运算符

> < >= <= == !=

赋值运算符

=

逻辑运算符

and or not

位运算符(了解)

>> <<

运算符的优先级
运算符 描述
** 指数 (最高优先级)
~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % // 乘,除,取模和取整除
+ - 加法减法
>> << 右移,左移运算符
& 位 ‘AND’
^ | 位运算符
<= < > >= 比较运算符
<> == != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not and or 逻辑运算符

turtle海龟绘图

导包
1
import package

第二阶段(二级)

本阶段主要强调学生的代码规范,通过第一阶段的学习来逐步了解这门语言,则下一步需要注重学生良好习惯的培养,该阶段要求学生的程序代码工整优雅,符合PEP8标准

三大结构

顺序

最基本的结构,Python程序从上到下依次一行一行被解释运行

分支

单分支

1
2
if 条件1:
代码块1

双分支

1
2
3
4
if 条件1:
代码块1
else:
代码块2

多分支

1
2
3
4
5
6
7
8
if 条件1:
代码块1
elif 条件2:
代码块2
elif 条件3:
代码块3
eles:
代码块4
循环

while循环,通常用于死循环,通过while循环向同学们引入Python中循环的概念,初步接触Python中的循环结构。向大家扩展逻辑真假的常见形式以及while 1与while True的区别。

for循环,Python程序最常用的循环语句,通过大量练习让学生掌握循环结构的使用。

while循环与for循环的区别:通常while循环用于死循环,或者已知循环次数的循环;for循环通常用于不知道循环次数的循环;实际使用中两者可以任意选择。

  • 循环控制语句

break 跳出当前一级的循环,进入到该循环体的外部或上一级

continue 跳出当前一轮的循环,再次进入到循环体进行下一轮

pass 无其他意义,仅做代码填充使用

  • 嵌套循环

有外层进入内层,再由内层进入外层,经常与循环控制语句搭配使用

二进制

十进制与二进制的转换

拓展:为什么要用二进制

  • 可靠性高(稳定)
  • 规则简单

列表

可变

[1, 2, 3]

列表的截取

列表的增删改查

拓展:多级列表

集合

无序,不可重复

元组

不可变

(1, 2, 3)

字典

可变,键值对,键不可以重复,值可以重复,类比查字典

从Python 3.6开始,字典是变成有顺序的了

{“a”: 1, “b”: 2, “c”:3}

字典的增删改查

拓展:常见的保存数据的方式之json

1
2
3
4
5
6
7
8
{
"a": 1,
"b": ["apple", "pear", "banana"],
"c": {
"a": 123,
"b": 456
}
}

字符串

字符串的截取

字符串常见的处理函数,切片…

1
2
3
4
a = " 123 "
a.strip()
a.lstrip()
a.rstrip()

转义 \

编码

python程序源代码的编码和解释器默认编码不同时则产生乱码现象,可在源代码首行加入注释以指定文件编码类型

  • 源代码以utf-8编码保存,则可标明utf-8或utf8
    1
    #coding:utf-8
  • 源代码以ansi编码保存,则可标明ansi或gbk或gb2312
    1
    #coding:gbk

utf-8编码,gbk编码

编码 范围 大小
ASCII 仅英文数字和特殊符号 1字节
ANSI 包含ASCII的扩充,如简体中文则相当于GB2312 中文2字节
GB2312 包含简体中文 中文2字节
GBK 包含简体中文、繁体中文等 中文2字节,英文1字节
Unicode 内存中选用的编码 定长
UTF-8 所有字符 中文3字节,英文1字节

windows默认字符集 GBK

Linux默认字符集 UTF-8

第三阶段(三级)

本阶段着重强调函数的使用,来提高代码的复用率,更加锻炼学生的逻辑思维能力

函数

函数的创建与调用

拓展:函数名的命名规则

传递参数与返回值
函数的嵌套

global、nonlocal

全局变量和局部变量之间的区别

常见的内置函数的使用

获取当前时间

1
2
3
4
import time
time.time()
time.datetime()
time.ctime()

时间的字符串格式化输出

1
2
import time
time.strifttime("%Y-%m-%d %H:%M:%S", timestamp)

程序的手动终止

1
2
import os
os.exit()

生成随机数

1
2
3
import random
random.randInt()
random.randFloat()

异常处理

常见的几种异常,以及几种异常之间的关系,通过学习本节课来看懂程序出现错误的原因,并学会如何去处理异常。

1
2
3
4
5
6
7
8
9
10
try:
a = 2 / 0
except SyntaxError:
print("语法错误")
except:
print("其他错误")
else:
print("太好了,没有错误")
finally:
print("我一定会出现的")

raise抛出异常

拓展:通常哪些地方需要用到异常处理?各种异常之间的关系?哪些异常可以被捕捉?sys.exit()是否可以被捕获?

BaseException

Exception

SyntaxError

IndexError

ValueError

ModuleNotFoundError

算法

解析、枚举、排序、查找

文件操作

两种打开文件的方式

  • open函数
    1
    2
    file = open("1.txt")
    file.close()
  • with open()
    1
    2
    with open("123.txt", "w") as f:
    content = f.read()

常见的几种打开文件的方式

r 只读

w 写

a 增加

b 以二进制方式打开

拓展:二进制文件与文本文件的区别;操作系统是如何识别文本文件和二进制文件的。

数据的存储

  • xml 整齐、复杂、不易阅读
  • json 简洁、直观
  • protobuf 序列化、不易阅读、体积小、方便传输
  • csv 自动化办公

装饰器和语法糖

第四阶段(四级+)

本阶段注重学生的各方面能力的提升,进一步加深对Python语言的理解,通过阅览Python自带模块的源码,更能让自己写出简洁、优雅的代码,通过拓展一些相关知识,也培养了学生接触新知的能力,多方面的综合也带来更加高的难度与挑战

面向对象编程

简介

什么是面向对象编程,面向对象编程与面向过程编程的特点与优缺点

通过面向对象编程能更好地帮助大家共同完成一个项目,从而加快了团队的效率;但是运行效率不如面向过程编程。

类与对象的关系

拓展:类和对象的命名规则

继承

Python是单继承,一个子类只允许继承一个父类

重载

重载发生在一个类的内部

封装

限制变量以及函数等的权限,来保护类的内部属性结构不被破坏。实际上Python对权限的把控很宽泛,无实际限制。

多态

多态发生在多个类之间

理解多态和重载的区别

列表推导式、生成器推导式

列表推导式、生成器与循环结构的结合

序列解包、切片

通过本节的学习,可以让自定义函数有更加自由的定义方式,传递可变个数的参数给同一个函数,从而间接实现面向对象的类重载特性

正则表达式

文本匹配与处理

数据库

通过数据库完成数据的增删改查

  • SQLite

内存分析

通过了解内存内部的数据传递的方式能更加有利于对计算机语言的理解,使代码更不容易出错,且代码执行效率更高

深浅拷贝

通过上一章节内存分析的学习,了解深浅拷贝之间的区别。浅拷贝相当于创建了一个快捷方式,深拷贝相当于复制了一个对象

设计模式

简要了解常见的一到两种设计模式

  • 单例模式
  • 工厂模式

网络协议

了解get、post请求,完成简单的爬虫练习,通过发送http请求获得返回的数据,进行处理后通过与文件的读写相结合,进行数据的保存与处理

Tkinter

GUI编程

 评论
评论插件加载失败
正在加载评论插件