目 录
第 10章 图形图像开发实战1
10.1 使用Pillow库2
范例10-01:安装Pillow库2
范例10-02:使用Image模块创建随机大小图片2
范例10-03:使用Image模块打开一幅图片3
范例10-04:实现图片透明度混合3
范例10-05:实现图片遮罩混合处理4
范例10-06:缩放指定图片5
范例10-07:使用Image模块缩放指定图片5
范例10-08:对指定图片实现剪切和粘贴功能6
范例10-09:对指定图片的格式进行转换6
范例10-10:旋转指定图片7
范例10-11:对指定图片实现过滤模糊操作8
范例10-12:使用其他内置函数8
范例10-13:使用Pillow绘制随机点阵图和点阵图9
范例10-14:将PNG图片转换为可读写的RLE图片10
范例10-15:使用ImageChops模块实现图片合成13
范例10-16:实现图像增强处理13
范例10-17:实现同时增强处理多幅图像14
范例10-18:对指定图片实现滤镜特效15
范例10-19:使用ImageDraw模块绘制二维图像16
范例10-20:使用ImageFont模块绘制二维图像17
范例10-21:生成随机验证码图片18
范例10-22:使用ImageFont模块绘制验证码18
范例10-23:绘制指定年份的日历19
10.2 pyBarcode库实战20
范例10-24:创建EAN-13标准的条形码20
范例10-25:将创建的EAN-13标准条形码保存为PNG图片20
范例10-26:创建两个条形码图片21
10.3 使用库qrcode创建二维码21
范例10-27:将文本信息生成为一个二维码21
范例10-28:将网址信息生成为一个二维码22
范例10-29:将网址信息生成为一个指定样式二维码22
范例10-30:将网址信息生成为一个带有素材图片的二维码23
范例10-31:使用qrcode开发一个二维码生成器24
10.4 scikit-image开发实战26
范例10-32:安装scikit-image26
范例10-33:使用skimage读入并显示外部图像26
范例10-34:读取并显示外部灰度图像27
范例10-35:读取并显示内置星空图片27
范例10-36:读取并保存内置星空图片28
范例10-37:显示内置星空图片的基本信息29
范例10-38:实现内置猫图片的红色通道的效果29
范例10-39:对内置猫图片进行二值化操作30
范例10-40:对内置猫图片进行裁剪处理31
范例10-41:将unit8类型转换成float类型31
范例10-42:将float类型转换成unit8类型31
范例10-43:将RGB图转换为灰度图32
范例10-44:使用skimage实现绘制图片功能32
范例10-45:使用subplot()函数绘制多视图窗口图片33
范例10-46:使用subplots()函数绘制多视图窗口图片34
范例10-47:使用viewer绘制并显示内置月亮图片35
范例10-48:显示系统内指定素材图片35
范例10-49:读取并显示文件夹pic中JPG图片的个数36
范例10-50:将指定素材图片批量转换为灰度图36
范例10-51:使用函数concatenate_images(ic)连接图片37
范例10-52:改变指定图片的大小37
范例10-53:使用函数rescale()缩放指定图片38
范例10-54:使用函数rotate()旋转指定图片38
10.5 使用face_recognition 实现人脸识别39
范例10-55:搭建开发环境39
范例10-56:显示指定人像的人脸特征39
范例10-57:在指定照片中识别人脸40
范例10-58:识别照片中的所有人脸41
范例10-59:判断照片中是否包含某个人脸43
范例10-60:识别照片中的人到底是谁43
范例10-61:摄像头实时识别44
第 11章 多线程开发实战46
11.1 使用threading模块47
范例11-01:使用_thread模块创建2个线程47
范例11-02:直接在线程中执行函数47
范例11-03:通过继承类threading.Thread创建线程48
范例11-04:使用方法join()实现线程等待48
范例11-05:使用RLock实现线程同步49
范例11-06:使用Lock对临界区加锁49
范例11-07:使用上下文管理器避免死锁50
范例11-08:测试前面上下文管理器文件的功能51
范例11-09:5位哲学家就餐问题52
范例11-10:使用Condition实现一个捉迷藏游戏53
范例11-11:实现一个周期性的定时器54
范例11-12:使用Semaphore对象执行4个线程55
范例11-13:只唤醒一个单独的等待线程55
范例11-14:使用BoundedSemaphore对象执行4个线程56
范例11-15:使用Event对象实现线程同步57
范例11-16:使用Event对象同步线程的启动57
范例11-17:使用Timer设置线程延迟5s后执行58
范例11-18:使用local对象管理线程局部数据59
范例11-19:使用local()创建一个线程本地存储对象59
11.2 使用进程库multiprocessing60
范例11-20:使用Process对象生成进程60
范例11-21:使用Pipe对象创建双向管道61
范例11-22:使用Queue对象放入进程61
范例11-23:使用Connection对象处理数据62
范例11-24:使用Shared对象在共享内存中创建共享ctypes对象62
范例11-25:使用Manager对象操作列表63
范例11-26:使用Manager对象共享对象类型63
范例11-27:使用Proxy对象共享对象类型64
范例11-28:使用Pool对象创建多个进程并实现并发处理65
范例11-29:使用Pool对象实现进程调度65
范例11-30:使用Pool对象并行处理某个目录下的文件66
范例11-31:使用线程和队列实现Actor并发编程模式67
范例11-32:使用元组的形式传递带标签消息68
范例11-33:实现一个Actor并发编程模式的变种69
11.3 使用库concurrent.futures69
范例11-34:使用submit()方法操作线程池70
范例11-35:使用map()方法返回迭代器结果70
范例11-36:使用wait()方法返回一个元组70
范例11-37:使用ThreadPoolExecutor实现异步调用71
范例11-38:使用ProcessPoolExecutor实现异步调用71
范例11-39:使用线程池服务 客户端72
范例11-40:手动创建自己的 线程池73
范例11-41:使用ThreadPoolExecutor 创建线程池的优势73
范例11-42:读取数据并标识出 所有访问过文件73
范例11-43:实现多核读取操作74
范例11-44:使用类Future实现 封装操作75
范例11-45:使用生成器代替 线程实现并发76
范例11-46:使用生成器来实现Actor并发77
11.4 使用sched模块78
范例11-47:使用类scheduler实现时间调度78
范例11-48:使用scheduler对象实现时间调度78
范例11-49:使用sched()方法定时执行任务79
范例11-50:使用sched循环执行任务79
范例11-51:使用queue模块实现线程之间数据通信80
范例11-52:构建一个线程安全的优先级队列81
范例11-53:实现FIFO队列82
范例11-54:实现LIFO队列83
范例11-55:使用模块queue实现优先级队列83
范例11-56:轮询多个线程队列83
11.5 使用模块subprocess85
范例11-57:使用模块subprocess创建子进程85
范例11-58:使用类Popen创建进程并执行指定源码86
第 12章 Python游戏开发实战87
12.1 简单的小游戏88
范例12-01:猜数游戏88
范例12-02:龙的世界游戏89
范例12-03:Hangman游戏90
范例12-04:恺撒密码游戏94
范例12-05:维吉尼亚密码游戏94
范例12-06:Reversi黑白棋游戏95
范例12-07:石头、剪子、布游戏99
12.2 Pygame游戏开发初级实战101
范例12-08:安装Pygame101
范例12-09:开发第 一个Pygame程序102
范例12-10:处理键盘事件103
范例12-11:在全屏显示模式和非全屏显示模式之间进行切换104
范例12-12:显示指定样式文字104
范例12-13:实现一个三原色颜色滑动条效果105
范例12-14:随机在屏幕上绘制点106
范例12-15:随机在屏幕中绘制各种多边形107
12.3 Pygame游戏开发高级实战108
范例12-16:开发一个俄罗斯方块游戏108
范例12-17:仿微信飞机游戏115
范例12-18:简单的贪吃蛇游戏117
范例12-19:推箱子游戏120
范例12-20:吃苹果游戏123
范例12-21:简易跑酷游戏125
范例12-22:小猫吃鱼游戏128
范例12-23:分析官网的坦克大战游戏129
范例12-24:两种贪吃蛇游戏方案132
范例12-25:简易俄罗斯方块游戏139
12.4 Cocos2d游戏开发实战140
范例12-26:第 一个Cocos2d程序140
范例12-27:创建层141
范例12-28:在层中添加事件142
范例12-29:在层中添加动作143
范例12-30:在层中使用鼠标按键事件144
范例12-31:使用地图145
范例12-32:2048游戏145
范例12-33:贪吃蛇游戏147
范例12-34:水果连连看游戏148
范例12-35:AI智能贪吃蛇方案149
范例12-36:AI智能五子棋游戏152
第 13章 数据可视化实战156
13.1 使用Matplotlib157
范例13-01:安装Matplotlib157
范例13-02:绘制散点图158
范例13-03:绘制一个简单的折线图159
范例13-04:设置标签文字和线条粗细160
范例13-05:绘制指定样式的散点图160
范例13-06:绘制柱状图161
范例13-07:绘制有说明信息的柱状图162
范例13-08:绘制一个比较美观的柱状图163
范例13-09:绘制多幅子图165
范例13-10:在一个坐标系中绘制两个折线图166
范例13-11:使用正弦函数和余弦函数绘制曲线167
范例13-12:使用Matplotlib的默认配置绘图167
范例13-13:绘制随机漫步图168
范例13-14:绘制3D图表170
范例13-15:绘制波浪图171
范例13-16:绘制散点图171
范例13-17:绘制等高线图171
范例13-18:绘制饼状图172
范例13-19:大数据分析2014年温度和温度173
范例13-20:在tkinter中使用Matplotlib绘制图表174
13.2 使用库pygal175
范例13-21:安装库pygal176
范例13-22:使用pygal模拟掷骰子176
范例13-23:模拟同时掷两个骰子177
13.3 读写处理CSV文件178
范例13-24:输出CSV文件中的日期和标题178
范例13-25:将数据保存为CSV格式179
范例13-26:读取指定CSV文件的文件头179
范例13-27:输出CSV文件的文件头和对应位置180
范例13-28:输出CSV文件中每天的气温180
范例13-29:根据CSV文件数据绘制图表181
范例13-30:提取CSV数据并保存到MySQL数据库181
范例13-31:提取CSV数据并保存到SQLite数据库184
13.4 使用库pandas185
范例13-32:安装库pandas并测试是否安装成功185
范例13-33:读取并显示CSV文件中的前3条数据186
范例13-34:更加规整地读取并显示CSV文件中的前3条数据186
范例13-35:读取并显示CSV文件中的某列数据187
范例13-36:用统计图表展示CSV中的某列数据187
范例13-37:选择指定数据188
范例13-38:显示CSV文件中某列和某行数据188
范例13-39:在图表中统计显示CSV文件中的出现次数前10名信息191
范例13-40:统计文件bikes.csv中每个月的骑行数据192
范例13-41:输出某街道前5天的骑行数据192
范例13-42:使用时间序列功能193
范例13-43:获取某一天是星期几193
范例13-44:统计周一到周日每天的骑行数据193
范例13-45:使用Matplotlib图表统计周一到周日每天的骑行数据194
范例13-46:使用Matplotlib统计某区域的全年天气数据194
范例13-47:输出CSV文件中的全部天气信息195
13.5 使用库NumPy195
范例13-48:安装库NumPy并创建一个2×3的二维数组196
范例13-49:索引数组中的元素196
范例13-50:使用内置函数操作数组196
范例13-51:使用arange()函数创建数组并进行迭代197
范例13-52:数组转置和修改197
范例13-53:返回展开为一维数组的副本197
范例13-54:使用字符串函数198
范例13-55:使用正弦、余弦和正切函数199
范例13-56:使用算术函数实现四则运算199
范例13-57:从给定数组的元素中沿指定轴返回小值和值200
范例13-58:使用函数sort()实现快速排序200
范例13-59:使用函数byteswap()实现字节交换201
范例13-60:使用函数empty()返回一个矩阵202
范例13-61:在NumPy中使用Matplotlib202
范例13-62:使用Matplotlib绘制正弦波图203
范例13-63:使用Matplotlib绘制直方图203
第 14章 Flask Web开发实战204
14.1 Flask Web初级实战205
范例14-01:安装Flask205
范例14-02:第 一个Flask Web程序205
范例14-03:使用PyCharm开发Flask程序206
范例14-04:传递URL参数208
范例14-05:使用GET请求获取URL参数208
范例14-06:使用cookie跟踪用户行为209
范例14-07:使用Flask-Script扩展增强程序功能210
范例14-08:使用模板211
范例14-09:使用Flask-Bootstrap
扩展212范例14-10:使用Flask-Moment
扩展本地化日期和时间214
范例14-11:使用Flask-WTF扩展处理Web表单215
范例14-12:文件上传系统217
范例14-13:用户注册登录系统218
范例14-14:使用Flask-SQLAlchemy管理数据库220
范例14-15:使用Flask-Mail 扩展发送电子邮件222
范例14-16:使用SendGrid发送邮件225
14.2 Flask Web高级实战227
范例14-17:Python+Flask+MySQL开发信息发布系统227
范例14-18:图书借阅管理系统230
范例14-19:Flask+TinyDB实现个人日志系统235
范例14-20:使用Peewee+Flask+MySQL开发一个在线留言系统240
范例14-21:使用Flask+MySQL
开发一个信息发布系统241
第 15章 Django Web开发实战245
15.1 Django Web初级实战246
范例15-01:安装Django246
范例15-02:第 一个Django项目246
范例15-03:在URL中传递参数248
范例15-04:使用模板250
范例15-05:使用表单251
范例15-06:实现基本的数据库操作252
15.2 Django Web高级实战253
范例15-07:使用Django后台管理系统开发一个博客系统253
范例15-08:开发一个新闻聚合系统256
范例15-09:开发一个在线商城系统262
范例15-10:智能书签管理系统270
范例15-11:智能新闻发布系统274
范例15-12:智能图书借阅系统277
范例15-13:Django+ Vue在线聊天室系统280
15.3 使用库Mezzanine281
范例15-14:使用Mezzanine开发一个内容管理系统281
范例15-15:基于Cartridge的购物车程序283
范例15-16:在线BBS论坛系统285
第 16章 三维立体程序开发实战290
16.1 使用Matplotlib绘制三维图形291
范例16-01:绘制一个简单的3D图形291
范例16-02:绘制3D曲线291
范例16-03:绘制3D轮廓图292
范例16-04:绘制3D直方图293
范例16-05:绘制3D网状线293
范例16-06:绘制3D三角面片图293
范例16-07:绘制3D散点图294
范例16-08:绘制3D文字295
范例16-09:绘制3D条形图296
范例16-10:绘制3D曲面图296
范例16-11:绘制3D散点图297
范例16-12:绘制混合图298
范例16-13:绘制子图298
范例16-14:绘制3D坐标系299
16.2 使用OpenGL绘制三维图形300
范例16-15:安装PyOpenGL301
范例16-16:第 一个PyOpenGL程序301
范例16-17:点线面的绘制302
范例16-18:绘制平方曲线304
范例16-19:绘制立方曲线305
范例16-20:绘制艺术图像306
范例16-21:绘制不同的线条307
范例16-22:绘制平滑阴影三角形308
范例16-23:渲染一个简单的立方体309
范例16-24:实现灯光渲染309
范例16-25:灯光渲染陈列茶壶310
范例16-26:控制旋转物体313
范例16-27:实现一个简单的动画313
范例16-28:实现旋转复杂图形的动画314
范例16-29:实现一个简单的3D游戏315
范例16-30:移动的3D立方体319
范例16-31:飞翔的立方体世界320
16.3 使用Panda3D绘制三维图形321
范例16-32:安装Panda3D并
创建第 一个Panda3D程序321
范例16-33:熊猫游戏324
范例16-34:迷宫中的小球游戏324
范例16-35:飞船大作战游戏328
范例16-36:拳击赛游戏330
范例16-37:超级大恐龙331
范例16-38:熊猫游乐场游戏332
范例16-39:魔幻迪厅游戏332
范例16-40:魔幻萤火虫之夜333
范例16-41:奔跑的精灵333
第 17章 Python算法实战334
17.1 常用的算法思想实战335
范例17-01:使用递归函数创建质数335
范例17-02:实现拓扑排序335
范例17-03:使用分治算法求顺序表的值335
范例17-04:判断某个元素是否在其中336
范例17-05:找出一组序列中的第k小的元素336
范例17-06:使用回溯法求集合{1, 2, 3, 4}的所有子集337
范例17-07:获取[1,2,3,4]的所有排列338
范例17-08:回溯法的8“皇后”问题339
范例17-09:使用回溯法解决迷宫问题340
范例17-10:使用回溯法解决背包问题341
范例17-11:找出从正整数1,2,3…n中任取r个数的所有组合342
范例17-12:使用回溯法实现图的遍历343
范例17-13:使用回溯法解决旅行者交通费用问题344
范例17-14:使用回溯法解决图的着色问题346
范例17-15:实现 'a'、'b'、'c'、'd' 4个元素的全排列347
范例17-16:解决选排列问题348
范例17-17:解决作业调度问题350
范例17-18:长公共子序列351
范例17-19:爬楼梯问题352
范例17-20:使用穷举法计算24点353
范例17-21:穷举指定长度的所有字符串353
范例17-22:使用穷举法计算平方根354
范例17-23:解决一个数学问题354
范例17-24:使用递归法计算斐波那契数列的第n项355
范例17-25:使用递归法计算两个数的乘积355
范例17-26:计算n的阶乘356
范例17-27:使用递归算法解决“汉诺塔”问题356
范例17-28:利用递归算法获取
斐波那契数列前n项的值358
范例17-29:利用切片递归方式查找数据358
范例17-30:顺时针90°调换二维数组中的数据359
范例17-31:换零钱的问题359
范例17-32:使用递归算法实现二分法查找360
范例17-33:小球弹跳递归计算距离360
范例17-34:深度优先与广度优先遍历的递归实现360
17.2 排序操作算法实战362
范例17-35:实现快速排序362
范例17-36:实现合并排序363
范例17-37:使用递归算法实现快速排序363
范例17-38:实现冒泡排序363
范例17-39:实现从大到小的冒泡排序364
范例17-40:冒泡排序的另外方案364
范例17-41:冒泡排序的降序排列365
范例17-42:实现基本的快速排列366
范例17-43:实现插入排序366
范例17-44:实现无序数据的插入排序367
范例17-45:实现固定数据的插入排序367
范例17-46:排序随机生成的0~100的数值368
范例17-47:实现选择排序368
范例17-48:实现直接选择排序369
范例17-49:实现选择排序的操作步骤369
范例17-50:选择排序和Python
内置函数的效率对比370
范例17-51:使用选择排序处理字符371
范例17-52:排序处理多个队列372
范例17-53:使用堆排序372
范例17-54:使用堆排序处理数据373
范例17-55:将数组按照堆输出374
范例17-56:在堆内实现任意查找374
范例17-57:实现小堆375
范例17-58:使用堆进行排序376
范例17-59:实现大顶堆排序377
范例17-60:实现堆排序的3种方式378
范例17-61:实现基数排序379
范例17-62:实现桶排序380
范例17-63:实现计数排序380
范例17-64:实现希尔排序381
范例17-65:展示希尔排序的步骤381
范例17-66:利用希尔排序排列一个列表382
范例17-67:实现折半插入排序382
范例17-68:实现归并排序383
范例17-69:使用归并排序处理指定列表384
范例17-70:归并排序的另外解决方案384
范例17-71:使用归并排序处理两个列表385
范例17-72:浮点数的归并排序385
范例17-73:使用折半查找算法386
范例17-74:展示归并排序的处理步骤387
17.3 经典数据结构开发实战387
范例17-75:汉诺塔问题387
范例17-76:简单的爬楼梯问题387
范例17-77:近点对问题388
范例17-78:从数组中找出指定和的数值组合389
范例17-79:找零问题390
范例17-80:马踏棋盘391
范例17-81:渡过问题392
范例17-82:1000以内的完全数393
范例17-83:多进程验证哥德巴赫猜想394
范例17-84:高斯消元法解线性方程组395
范例17-85:歌星大奖赛398
范例17-86:捕鱼和分鱼398
范例17-87:平分7筐鱼399
范例17-88:百钱买百鸡400