《Python极客项目编程(第2版)》简介:
本书并不介绍Python语言的基础知识,而是通过一系列有趣的项目,展示如何用Python解决各种实际问题,以及如何使用一些流行的Python库。
◎编辑推荐:
每个项目都按照【讲解原理-分析需求-代码精讲-知识小结-扩展练习-完整代码】的方式进行讲解,并提供可下载运行的源代码,赠送Python排障手册+程序员面试手册
本书相比第一版进行了如下修订:
(1)新增/替换5个全新项目,紧跟前沿热点
(2)基于Python 3.9全面更新所有项目
(3)采用更新、更实用的Python方法和算法
(4)使用Anaconda简化Python安装
(5)简化硬件项目的组装过程,专注于Python编程
◎内容简介:
本书共15章,每章讲解一个有趣的Python项目,这些项目可以分成5个部分:第一部分是热身,包括科赫雪花、繁花曲线;第二部分是模拟生命,包括康威生命游戏、使用Karplus-Strong算法生成泛音、群体行为模拟;第三部分是好玩的图形,包括文本图形、照片马赛克、裸眼立体画;第四部分是走进三维,包括理解OpenGL、圆环面上的康威生命游戏、体渲染;第五部分是玩转硬件,包括在树莓派Pico上实现Karplus-Strong算法、树莓派激光音乐秀、物联网花园、树莓派音频机器学习。此外,本书还通过附录介绍如何安装Python和设置树莓派。
本书适合已经了解了基本的Python语法和编程知识、想要尝试和探索通过Python编程解决实际问题的读者阅读,也可作为Python初学者练习项目开发的参考用书。
◎专业书评:
如果你想熟练地运用Python做些聪明的事情,很难找到比此书中的项目更好或更有用的资料来帮助你理解这门语言的工作方式。
——Network World News Magazine
每个Python程序员的书架上都应有这本书。
——Full Circle Magazine
此书中充满有趣的项目。
——iProgrammer网站
本书适合想进一步提升编程水平和扩展Python语言知识的程序员阅读。本书很好地诠释了Python的相关细节,并确保读者能够清楚地了解Python程序中正在发生的事情。
——InfoQ网站
本书为具有科学思维的程序员和对编程感兴趣的科学爱好者提供了优秀的项目,适合各种人群阅读。
——《Python编程快速上手:让繁琐工作自动化》作者Al Sweigart
这是一本难得一见的编程图书,读起来很有趣,不仅适合中高级Python程序员参考,即便是新手也应该读一读。阅读本书的过程始终都很愉快。
——Goodreads网站评论
此书充满有趣且娱乐性十足的想法,是一部非典型的编程著作,适合编程爱好者用来寻找乐趣,千万不要错过!
——亚马逊网站评论
《Python极客项目编程(第2版)》目录:
第一部分 热身
第 1 章 科赫雪花 2
1.1 工作原理 2
1.1.1 使用递归 2
1.1.2 构建科赫雪花 3
1.1.3 使用海龟绘图法绘图 6
1.2 需求 8
1.3 代码 8
1.3.1 计算点的坐标 8
1.3.2 递归 8
1.3.3 绘制片段 9
1.3.4 编写函数 main() 9
1.4 运行程序 10
1.5 小结 10
1.6 实验 11
1.7 完整代码 11
第 2 章 繁花曲线 13
2.1 工作原理 13
2.1.1 理解参数方程 13
2.1.2 使用海龟绘图法绘制曲线 15
2.2 需求 16
2.3 代码 17
2.3.1 绘制繁花曲线 17
2.3.2 协调动画 20
2.3.3 保存曲线 22
2.3.4 分析命令行参数及初始化 23
2.4 运行程序 24
2.5 小结 25
2.6 实验 26
2.7 完整代码 26
第二部分 模拟生命
第 3 章 康威生命游戏 32
3.1 工作原理 32
3.2 需求 34
3.3 代码 34
3.3.1 显示网格 34
3.3.2 设置初始状态 35
3.3.3 实现边界条件 36
3.3.4 实现规则 37
3.3.5 向程序传递命令行参数 37
3.3.6 初始化 38
3.4 运行程序 38
3.5 小结 40
3.6 实验 40
3.7 完整代码 40
第 4 章 使用 Karplus-Strong 算法生成泛音 43
4.1 工作原理 442
4.1.1 模拟 45
4.1.2 WAV 文件格式 46
4.1.3 小调五声音阶 47
4.2 需求 48
4.3 代码 48
4.3.1 使用 deque 实现环形缓冲区 48
4.3.2 实现 Karplus-Strong算法 48
4.3.3 写入 WAV 文件 50
4.3.4 使用 PyAudio 播放 WAV文件 50
4.3.5 创建音符及分析参数 52
4.4 运行弹拨乐器模拟程序 53
4.5 小结 54
4.6 实验 54
4.7 完整代码 54
第 5 章 群体行为模拟 58
5.1 工作原理 58
5.2 需求 59
5.3 代码 59
5.3.1 初始化模拟 59
5.3.2 设置边界条件 60
5.3.3 绘制个体 62
5.3.4 应用群体行为规则 63
5.3.5 影响模拟 67
5.3.6 分步模拟 68
5.3.7 分析参数及实例化Boids 类 69
5.4 运行群体行为模拟程序 69
5.5 小结 69
5.6 实验 70
5.7 完整代码 70
第三部分 好玩的图形
第 6 章 文本图形 74
6.1 工作原理 75
6.2 需求 76
6.3 代码 76
6.3.1 定义灰度标尺和网格 76
6.3.2 计算平均亮度 77
6.3.3 根据图像生成 ASCII 内容 77
6.3.4 定义命令行参数 78
6.3.5 将表示文本图形的字符串写入文本文件 79
6.4 运行文本图形生成程序 79
6.5 小结 80
6.6 实验 80
6.7 完整代码 80
第 7 章 照片马赛克 83
7.1 工作原理 83
7.1.1 分割目标图像 84
7.1.2 计算平均 RGB 值 84
7.1.3 匹配图像 85
7.2 需求 87
7.3 代码 87
7.3.1 读入输入图像 87
7.3.2 计算图像的平均 RGB 值 88
7.3.3 将目标图像分割为网格 88
7.3.4 查找与分片最匹配的图像 89
7.3.5 创建图像网格 90
7.3.6 创建照片马赛克 91
7.3.7 编写函数 main() 93
7.4 运行照片马赛克生成程序 94
7.5 小结 95
7.6 实验 95
7.7 完整代码 95
第 8 章 裸眼立体画 101
8.1 工作原理 102
8.1.1 感知裸眼立体画中的深度 102
8.1.2 使用深度图 103
8.1.3 平移像素 105
8.2 需求 106
8.3 代码 106
8.3.1 创建由随机圆组成的分片 106
8.3.2 重复分片 107
8.3.3 创建裸眼立体画 108
8.3.4 提供命令行参数 109
8.4 运行裸眼立体画生成程序 109
8.5 小结 110
8.6 实验 111
8.7 完整代码 111
第四部分 走进三维
第 9 章 理解 OpenGL 116
9.1 OpenGL 的工作原理 117
9.1.1 图元 117
9.1.2 三维变换 118
9.1.3 着色器 120
9.1.4 顶点缓存 121
9.1.5 纹理映射 121
9.1.6 OpenGL 上下文 122
9.2 需求 122
9.3 代码 122
9.3.1 RenderWindow 类 123
9.3.2 Scene 类 125
9.3.3 辅助函数 129
9.4 运行 OpenGL 应用程序 130
9.5 小结 130
9.6 实验 130
9.7 完整代码 131
第 10 章 圆环面上的康威生命游戏 136
10.1 工作原理 136
10.1.1 计算顶点 136
10.1.2 计算光照法线 138
10.1.3 渲染 139
10.1.4 给三角形带着色 140
10.1.5 控制相机 140
10.1.6 将网格映射到圆环面 141
10.2 需求 142
10.3 代码 142
10.3.1 渲染圆环面 142
10.3.2 实现康威生命游戏模拟 148
10.3.3 创建相机 149
10.3.4 整合代码 151
10.4 运行三维版康威生命游戏模拟 153
10.5 小结 154
10.6 实验 155
10.7 完整的圆环面渲染代码 155
10.8 完整的康威生命游戏模拟代码 160
10.9 完整的相机创建代码 161
10.10 RenderWindow 类的完整代码 162
第 11 章 体渲染 166
11.1 工作原理 166
11.1.1 数据格式 167
11.1.2 生成光线 167
11.1.3 OpenGL 窗口 169
11.2 需求 169
11.3 代码 169
11.3.1 生成三维纹理 170
11.3.2 生成光线 171
11.3.3 实现体光线投射算法 176
11.3.4 显示二维切片 180
11.3.5 整合代码 183
11.4 运行程序 185
11.5 小结 185
11.6 实验 185
11.7 完整的三维纹理生成代码 186
11.8 完整的光线生成代码 187
11.9 完整的体光线投射算法代码 192
11.10 显示二维切片的完整代码 195
11.11 完整的主文件代码 198
第五部分 玩转硬件
第 12 章 在树莓派 Pico 上实现Karplus-Strong 算法 202
12.1 工作原理 203
12.1.1 输入和输出 203
12.1.2 I2S 协议 204
12.2 需求 205
12.2.1 组装硬件 205
12.2.2 安装 MicroPython 207
12.3 代码 207
12.3.1 设置 207
12.3.2 生成音符 208
12.3.3 播放音频 210
12.3.4 编写函数 main() 211
12.4 运行程序 212
12.5 小结 213
12.6 实验 213
12.7 完整代码 214
第 13 章 树莓派激光音乐秀 218
13.1 工作原理 218
13.1.1 使用激光生成图案 219
13.1.2 使用快速傅里叶变换分析音频 222
13.2 需求 224
13.2.1 在树莓派上安装系统和软件 224
13.2.2 搭建激光秀装置 225
13.2.3 连接硬件 226
13.3 代码 228
13.3.1 设置 228
13.3.2 控制硬件 229
13.3.3 处理音频 230
13.3.4 测试电机 233
13.3.5 整合代码 234
13.4 运行激光音乐秀程序 235
13.5 小结 236
13.6 实验 236
13.7 完整代码 237
第 14 章 物联网花园 242
14.1 工作原理 242
14.1.1 低功耗蓝牙 243
14.1.2 Web 框架 Bottle 245
14.1.3 SQLite 数据库 246
14.2 需求 247
14.2.1 在树莓派上安装系统和软件 247
14.2.2 安装 CircuitPython 247
14.2.3 设置 IFTTT 服务 248
14.3 代码 249
14.3.1 CircuitPython 代码 249
14.3.2 BLE 扫描器代码 252
14.3.3 Web 服务器代码 258
14.3.4 主程序文件 264
14.4 运行物联网花园程序 266
14.5 小结 267
14.6 实验 267
14.7 完整的 CircuitPython 代码 268
14.8 完整的 BLE 扫描器代码 270
14.9 完整的 Python Web 服务器代码 273
14.10 完整的主程序代码 275
第 15 章 树莓派音频机器学习 277
15.1 机器学习概述 277
15.2 工作原理 278
15.2.1 声谱图 280
15.2.2 在树莓派上推断 281
15.3 需求 283
15.4 代码 284
15.4.1 在 Colab 中训练模型 284
15.4.2 在树莓派上使用模型 293
15.5 运行语音识别系统 301
15.6 小结 302
15.7 实验 303
15.8 完整代码 303
附录 A 安装 Python 309
A.1 获取本书项目的源代码 309
A.2 安装 Python 和 Python 模块 309
A.2.1 Windows 309
A.2.2 macOS 310
A.2.3 Linux 311
附录 B 设置树莓派 312
B.1 安装操作系统 312
B.2 测试连接 314
B.3 使用 SSH 登录树莓派 315
B.4 安装 Python 模块 316
B.5 远程使用 Visual Studio Code 316
· · · · · ·