目 录
第1章 人生苦短,我用Python!——Python简介
1.1 英明的决定 1
1.2 做一点准备 7
1.2.1 安装Python就这么简单 7
1.2.2 工欲善其事,IDLE 11
1.3 终于要开始写代码了,好嗨哟! 12
1.3.1 第一个Python程序:Hello world! 13
1.3.2 举一反三:随便Hello点啥 15
第2章 热身运动——了解一些基本概念
2.1 来点儿变化:变量 17
2.1.1 变量的赋值与使用 18
2.1.2 变量命名规则 20
2.1.3 Python中的变量只是一个标签 21
2.2 互动起来:输出与输入 23
2.2.1 内置函数简介 23
2.2.2 输出print() 24
2.2.3 输入input() 26
2.3 无规矩不成方圆:注释与编码规则 27
2.3.1 注释 27
2.3.2 缩进与空行 31
2.3.3 参考PEP8 32
2.4 物以类聚:Python数据类型简介 34
2.4.1 六种基本数据类型简介 34
2.4.2 数据类型的判断 35
2.4.3 容器、序列、迭代、可迭代对象 36
2.4.4 布尔值 37
第3章 数字和数学并不可怕——数据类型之数字
3.1 数字虽多,不过三类 39
3.1.1 整数 39
3.1.2 浮点数 41
3.1.3 复数 41
3.1.4 eval()函数与exec()函数 42
3.1.5 进制与进制转换 43
3.2 小学数学都学过——运算符与表达式 44
3.2.1 算数运算符 45
3.2.2 比较运算符 46
3.2.3 赋值运算符 47
3.2.4 逻辑运算符 48
3.2.5 各种运算符的混合使用与优先级 48
3.3 再也不用怕数学了:数学函数与math模块 49
3.3.1 数学函数 49
3.3.2 math模块 50
3.3.3 random模块 53
3.3.4 案例:做一个机选彩票的程序 54
第4章 字符串也是一种“串儿”——数据类型之字符串
4.1 字符串是一种什么串儿? 55
4.1.1 字符串的三种形式 55
4.1.2 字符串的索引 58
4.1.3 字符串的判断 59
4.1.4 转义字符与原始字符串 60
4.2 字符串的N种“食用方法” 62
4.2.1 字符串的切片 62
4.2.2 字符串的运算 64
4.2.3 处理字符串的有关函数 67
4.2.4 字符串的有关方法 68
4.2.5 字符串的格式化输出 71
4.3 正则表达式 71
4.3.1 正则表达式基础 72
4.3.2 正则表达式的应用 73
4.3.3 re模块 75
4.3.4 案例:验证手机号是否合法 77
第5章 让程序更听话——流程控制与if分支
5.1 送你一根指挥棒:流程控制简介 78
5.2 随机应变:if分支 80
5.2.1 if分支的几种结构 80
5.2.2 if结构的嵌套 84
5.2.3 多个if与多个elif的区别 86
5.2.4 pass语句 87
第6章 一句顶一万句——循环
6.1 初学编程我写了一万行代码,后来我学会了用循环 90
6.1.1 for循环结构 90
6.1.2 range()函数 92
6.1.3 break与continue 93
6.1.4 使用for循环遍历列表和字典 94
6.1.5 for循环嵌套 94
6.2 更“聪明”的while循环 95
6.2.1 while循环结构 95
6.2.2 while循环与else配合使用 97
6.2.3 在while循环中使用break 98
6.2.4 在while循环中使用continue 98
6.2.5 小心死循环 99
6.2.6 while循环嵌套 100
6.2.7 用while循环实现一个猜数字游戏 101
6.2.8 while循环和for循环混合使用 102
6.2.9 while循环与for循环之比较 103
第7章 我们也是有组织的——列表、元组、集合、字典
7.1 列车就是一列车,列表就是一列表 104
7.1.1 创建列表 104
7.1.2 列表的索引 105
7.1.3 列表的切片 105
7.1.4 列表的遍历 106
7.1.5 列表元素的修改、插入与删除 106
7.1.6 列表的复制 107
7.1.7 列表元素的判断 108
7.1.8 列表的嵌套 109
7.1.9 二维列表的遍历 110
7.1.10 列表的运算 110
7.1.11 操作列表的有关函数 111
7.1.12 列表的有关方法 112
7.1.13 列表解析式与生成器表达式 114
7.2 比列表“顽固”的元组 115
7.2.1 元组的创建 116
7.2.2 元组的索引、切片、删除、复制、遍历 116
7.2.3 元组的运算与判断 117
7.2.4 操作元组的有关函数 118
7.2.5 元组的有关方法 119
7.2.6 二维元组 120
7.3 字典,就像你用过的字典 120
7.3.1 字典的创建 121
7.3.2 字典元素的访问 121
7.3.3 字典元素的修改、添加与删除 122
7.3.4 字典的遍历 123
7.3.5 字典的嵌套与二维字典 124
7.3.6 操作字典的有关函数 125
7.3.7 字典的有关方法 126
7.3.8 深复制与浅复制 127
7.3.9 用字典实现多重分支 128
7.4 集合:搞搞关系 129
7.4.1 集合的创建 129
7.4.2 集合的遍历、判断与删除 129
7.4.3 集合的关系判断和运算 130
7.4.4 操作集合的有关函数 131
7.4.5 集合的有关方法 132
第8章 掌握核心科技——函数与模块
8.1 自制工具:自定义函数 135
8.1.1 函数的定义与调用 135
8.1.2 形参、实参、位置参数、关键字参数 136
8.1.3 参数的默认值 137
8.1.4 传递多个参数 138
8.1.5 传递列表或字典作为参数 139
8.1.6 函数的返回值 140
8.1.7 用函数实现一个猜数字游戏 140
8.1.8 变量的作用域 141
8.1.9 函数的嵌套 142
8.1.10 递归函数 143
8.1.11 匿名函数:lambda表达式 145
8.1.12 高阶函数:map()、filter() 145
8.1.13 闭包 146
8.1.14 装饰器 147
8.2 工具箱:模块 149
8.2.1 将自定义函数存储为模块 149
8.2.2 模块的导入与使用 150
8.2.3 if__name__==__main__: 152
第9章 单身狗的渴望——面向对象编程
9.1 物以类聚,人以群分 154
9.1.1 创建一个类 154
9.1.2 实例化一个对象 156
9.1.3 访问、修改类和对象的属性与方法 157
9.1.4 封装:私有属性和私有方法 159
9.1.5 继承:祖传秘方 161
9.1.6 多继承与多重继承 163
9.1.7 多态:各自表述 165
9.1.8 将类存储为模块 166
9.1.9 类模块的使用 167
9.2 模块、包、库,傻傻分不清楚? 167
9.2.1 包的创建与使用 167
9.2.2 模块、包、库的区别 168
9.2.3 Python标准库 169
9.3 给各种包找个管家:pip 169
9.3.1 pip的使用环境 169
9.3.2 包的安装与升级 170
9.3.3 包的查询与卸载 171
第10章 让鼠标休息一会儿——文件操作
10.1 文件读写 173
10.1.1 文件的打开、读取与关闭 173
10.1.2 文件的逐行读取与部分读取 174
10.1.3 查看指针位置与修改指针位置 176
10.1.4 写入文件内容 177
10.2 os模块 178
10.2.1 目录操作 179
10.2.2 文件操作 180
10.2.3 Linux系统下的权限操作 183
10.3 shutil模块 183
第11章 让我们一起囤积数据吧——数据库操作
11.1 数据库 187
11.1.1 数据库简介 187
11.1.2 SQL语句简介 189
11.1.3 DB-API简介 191
11.2 Python操作SQLite数据库 194
11.2.1 sqlite3模块的使用 194
11.2.2 数据表的创建、改名与数据的添加 195
11.2.3 数据的查询、修改与删除 197
11.2.4 查看表信息与删除表 199
11.3 Python操作MySQL数据库 202
11.3.1 下载安装MySQL 202
11.3.2 使用mysql.connector模块操作MySQL数据库 211
第12章 人非圣贤,孰能无过——错误与异常处理
12.1 错误与异常 215
12.1.1 错误与常见错误 215
12.1.2 异常类 218
12.2 异常处理 220
12.2.1 异常的获取与处理 221
12.2.2 使用raise语句自主抛出异常 223
12.2.3 使用自定义异常类 224
第13章 是骡子是马拉出来遛遛——调试与测试
13.1 调试 226
13.1.1 简单的调试方法 226
13.1.2 IDLE自带调试工具的使用 228
13.2 测试 233
13.2.1 单元测试与测试用例 233
13.2.2 unittest模块的使用 234
第14章 程序也要面子——GUI编程
14.1 GUI简介 237
14.2 Python内置GUI模块:Tkinter 238
14.2.1 使用Tkinter模块创建一个界面程序 238
14.2.2 窗口、控件、事件、事件处理函数 239
14.2.3 控件布局方式 248
14.3 案例:图形版猜数字游戏 255
第15章 人多力量大——并发编程
15.1 进程与线程 257
15.1.1 并发与并行 257
15.1.2 多进程与多线程 258
15.1.3 同步、异步、阻塞、非阻塞 259
15.2 多进程的使用 260
15.2.1 创建和调用子进程 261
15.2.2 通过继承Process类来创建多个进程 263
15.2.3 通过进程池Pool来创建多进程 263
15.2.4 进程间通信 265
15.3 多线程的使用 266
15.3.1 使用treading模块创建多线程 266
15.3.2 通过实例化Thread类来创建线程 267
15.3.3 线程池 267
15.3.4 线程间通信 268
15.3.5 线程安全 269
第16章 三天打鱼 天天上网——网络编程
16.1 网络基础 270
16.1.1 网络的硬件基础 270
16.1.2 网络模型 271
16.1.3 网络协议 272
16.1.4 域名、DNS、URL 273
16.1.5 客户端与服务器 274
16.1.6 Socket与socket模块 274
16.2 Web入门 276
16.2.1 超文本与超链接 276
16.2.2 超文本标记语言:HTML 277
16.2.3 HTTP请求 280
16.3 网络模块:urllib 281
16.3.1 request模块 281
16.3.2 error模块 283
16.3.3 parse模块 284
16.3.4 robotparser模块 285
第17章 实战项目一:让Python当你的工作助手
17.1 批量处理图片 287
17.1.1 pillow库简介 287
17.1.2 案例:批量调整图片大小 290
17.2 读写Word文档 293
17.2.1 python-docx库简介 293
17.2.2 文档写入操作 294
17.2.3 文档合并操作 297
17.3 处理Excel 299
17.3.1 openpyxl库 299
17.3.2 操作Excel表格 300
第18章 实战项目二:这个虫子有点牛——网络爬虫开发
18.1 网络爬虫简介 303
18.1.1 网络爬虫基本原理 303
18.1.2 网络爬虫的“规矩”——Robots协议 304
18.2 requests库 305
18.2.1 requests库的常用方法 306
18.2.2 用requests库爬取一个简单网页 307
18.3实战:爬取百度图片 310
第19章 实战项目三:你的游戏你做主——小游戏开发
19.1 Pygame库 318
19.1.1 Pygame库简介 318
19.1.2 Display模块 321
19.1.3 Surface模块 322
19.1.4 图形对象的常用方法 326
19.2 案例:制作一个贪吃蛇游戏 327
第20章 实战项目四:确认过眼神,我遇见对的人——AI人脸识别
20.1 人工智能简介 334
20.2 开放平台与API接口 336
20.3 案例:一个人脸识别与打分项目——Python看脸 340
20.3.1 Access Token 340
20.3.2 Base64编码 341
20.3.3 json数据格式 344
20.3.4 案例:Python看脸 345
第21章 工欲善其事,换个IDE?——PyCharm
21.1 PyCharm 349
21.1.1 PyCharm下载与安装 349
21.1.2 第一次使用PyCharm 354
21.2 用PyCharm写一个聊天程序 363