Python极客项目编程 ([美] Mahesh Venkitachalam) (Z-Library)
Statistics
3
Views
0
Downloads
0
Donations
Uploader

高宏飞

Shared on 2025年12月14日
Actions

Python极客项目编程 ([美] Mahesh Venkitachalam) (Z-Library)

技术

Author[美] Mahesh Venkitachalam

Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程,我们能够解决现实生活中的很多任务。 本书通过14个有趣的项目,帮助和鼓励读者探索Python编程的世界。全书共14章,分别介绍了通过Python编程实现的一些有趣项目,包括解析iTunes播放列表、模拟人工生命、创建ASCII码艺术图、照片拼接、生成三维立体图、创建粒子模拟的烟花喷泉效果、实现立体光线投射算法,以及用Python结合Arduino和树莓派等硬件的电子项目。本书并不介绍Python语言的基础知识,而是通过一系列不简单的项目,展示如何用Python来解决各种实际问题,以及如何使用一些流行的Python库。 本书适合那些想要通过Python编程来进行尝试和探索的读者,适合了解基本的Python语法和基本的编程概念的读者进一步学习,对于Python程序员有一定的启发和参考价值。

ISBN: B074C2XWB4
Publisher: 人民邮电出版社
Publish Year: 2017
Language: 中文
File Format: PDF
File Size: 10.6 MB
Support Statistics
¥.00 · 0times
Text Preview (First 20 pages)
Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

果核剥壳分享 www.ghxi.com 仅供个人学习
目  录 版权信息 版权声明 内容提要 致谢 前言 第一部分 热身运动 第1章 解析iTunes播放列表 1.1 iTunes播放列表文件剖析 1.2 所需模块 1.3 代码 1.3.1 查找重复 1.3.2 提取重复 1.3.3 查找多个播放列表中共同的音轨 1.3.4 收集统计信息 1.3.5 绘制数据 1.3.6 命令行选项 1.4 完整代码 1.5 运行程序 1.6 小结 1.7 实验 第2章 万花尺 2.1 参数方程 2.1.1 万花尺方程 2.1.2 海龟画图 2.2 所需模块 2.3 代码 2.3.1 Spiro构造函数 2.3.2 设置函数 2.3.3 restart()方法 果核剥壳分享 www.ghxi.com 仅供个人学习
2.3.4 draw()方法 2.3.5 创建动画 2.3.6 SpiroAnimator类 2.3.7 genRandomParams()方法 2.3.8 重新启动程序 2.3.9 update()方法 2.3.10 显示或隐藏光标 2.3.11 保存曲线 2.3.12 解析命令行参数和初始化 2.4 完整代码 2.5 运行万花尺动画 2.6 小结 2.7 实验 第二部分 模拟生命 第3章 Conway生命游戏 3.1 工作原理 3.2 所需模块 3.3 代码 3.3.1 表示网格 3.3.2 初始条件 3.3.3 边界条件 3.3.4 实现规则 3.3.5 向程序发送命令行参数 3.3.6 初始化模拟 3.4 完整代码 3.5 运行模拟人生的游戏 3.6 小结 3.7 实验 第4章 用Karplus-Strong算法产生音乐泛音 4.1 工作原理 4.1.1 模拟 4.1.2 创建WAV文件 4.1.3 小调五声音阶 4.2 所需模块 4.3 代码 4.3.1 用deque实现环形缓冲区 果核剥壳分享 www.ghxi.com 仅供个人学习
4.3.2 实现Karplus-Strong算法 4.3.3 写WAV文件 4.3.4 用pygame播放WAV文件 4.3.5 main()方法 4.4 完整代码 4.5 运行拨弦模拟 4.6 小结 4.7 实验 第5章 类鸟群:仿真鸟群 5.1 工作原理 5.2 所需模块 5.3 代码 5.3.1 计算类鸟群的位置和速度 5.3.2 设置边界条件 5.3.3 绘制类鸟群 5.3.4 应用类鸟群规则 5.3.5 添加个体 5.3.6 驱散类鸟群 5.3.7 命令行参数 5.3.8 Boids类 5.4 完整代码 5.5 运行类鸟群模拟 5.6 小结 5.7 实验 第三部分 图片之乐 第6章 ASCII文本图形 6.1 工作原理 6.2 所需模块 6.3 代码 6.3.1 定义灰度等级和网格 6.3.2 计算平均亮度 6.3.3 从图像生成ASCII内容 6.3.4 命令行选项 6.3.5 将ASCII文本图形字符串写入文本文件 6.4 完整代码 6.5 运行ASCII文本图形生成程序 果核剥壳分享 www.ghxi.com 仅供个人学习
6.6 小结 6.7 实验 第7章 照片马赛克 7.1 工作原理 7.1.1 分割目标图像 7.1.2 平均颜色值 7.1.3 匹配图像 7.2 所需模块 7.3 代码 7.3.1 读入小块图像 7.3.2 计算输入图像的平均颜色值 7.3.3 将目标图像分割成网格 7.3.4 寻找小块的最佳匹配 7.3.5 创建图像网格 7.3.6 创建照片马赛克 7.3.7 添加命令行选项 7.3.8 控制照片马赛克的大小 7.4 完整代码 7.5 运行照片马赛克生成程序 7.6 小结 7.7 实验 第8章 三维立体画 8.1 工作原理 8.1.1 感知三维立体画中的深度 8.1.2 深度图 8.2 所需模块 8.3 代码 8.3.1 重复给定的平铺图像 8.3.2 从随机圆创建平铺图像 8.3.3 创建三维立体画 8.3.4 命令行选项 8.4 完整代码 8.5 运行三维立体画生成程序 8.6 小结 8.7 实验 第四部分 走进三维 果核剥壳分享 www.ghxi.com 仅供个人学习
第9章 理解OpenGL 9.1 老式OpenGL 9.2 现代OpenGL:三维图形管线 9.2.1 几何图元 9.2.2 三维变换 9.2.3 着色器 9.2.4 顶点缓冲区 9.2.5 纹理贴图 9.2.6 显示OpenGL 9.3 所需模块 9.4 代码 9.4.1 创建OpenGL窗口 9.4.2 设置回调 9.4.3 Scene类 9.5 完整代码 9.6 运行OpenGL应用程序 9.7 小结 9.8 实验 第10章 粒子系统 10.1 工作原理 10.1.1 为粒子运动建模 10.1.2 设置最大范围 10.1.3 渲染粒子 10.1.4 利用OpenGL混合来创建更逼真火花 10.1.5 使用公告板 10.1.6 生成火花动画 10.2 所需模块 10.3 粒子系统的代码 10.3.1 定义粒子的几何形状 10.3.2 为粒子定义时间延迟数组 10.3.3 设置粒子初始速度 10.3.4 创建顶点着色器 10.3.5 创建片段着色器 10.3.6 渲染 10.3.7 Camera类 10.4 粒子系统完整代码 10.5 盒子代码 10.6 主程序代码 果核剥壳分享 www.ghxi.com 仅供个人学习
10.6.1 每步更新这些粒子 10.6.2 键盘处理程序 10.6.3 管理主程序循环 10.7 完整主程序代码 10.8 运行程序 10.9 小结 10.10 实验 第11章 体渲染 11.1 工作原理 11.1.1 数据格式 11.1.2 生成光线 11.1.3 显示OpenGL窗口 11.2 所需模块 11.3 项目代码概述 11.4 生成三维纹理 11.5 完整的三维纹理代码 11.6 生成光线 11.6.1 定义颜色立方体的几何形状 11.6.2 创建帧缓冲区对象 11.6.3 渲染立方体的背面 11.6.4 渲染立方体的正面 11.6.5 渲染整个立方体 11.6.6 调整大小处理程序 11.7 完整的光线生成代码 11.8 体光线投射 11.8.1 顶点着色器 11.8.2 片段着色器 11.9 完整的体光线投射代码 11.10 二维切片 11.10.1 顶点着色器 11.10.2 片段着色器 11.10.3 针对二维切片的用户界面 11.11 完整的二维切片代码 11.12 代码整合 11.13 完整的主文件代码 11.14 运行程序 11.15 小结 11.16 实验 果核剥壳分享 www.ghxi.com 仅供个人学习
第五部分 玩转硬件 第12章 Arduino简介 12.1 Arduino 12.2 Arduino生态系统 12.2.1 语言 12.2.2 IDE 12.2.3 社区 12.2.4 外设 12.3 所需模块 12.4 搭建感光电路 12.4.1 电路工作原理 12.4.2 Arduino程序 12.4.3 创建实时图表 12.5 Python代码 12.6 完整的Python代码 12.7 运行程序 12.8 小结 12.9 实验 第13章 激光音乐秀 13.1 用激光产生图案 13.1.1 电机控制 13.1.2 快速傅里叶变换 13.2 所需模块 13.2.1 搭建激光秀 13.2.2 连接电机驱动器 13.3 Arduino程序 13.3.1 配置Arduino数字输出引脚 13.3.2 主循环 13.3.3 停止电机 13.4 Python代码 13.4.1 选择音频设备 13.4.2 从输入设备读取数据 13.4.3 计算数据流的FFT 13.4.4 从FFT值提取频率信息 13.4.5 将频率转换为电机速度和方向 13.4.6 测试电机设置 13.4.7 命令行选项 果核剥壳分享 www.ghxi.com 仅供个人学习
13.4.8 手动测试 13.5 完整的Python代码 13.6 运行程序 13.7 小结 13.8 实验 第14章 基于树莓派的天气监控器 14.1 硬件 14.1.1 DHT11温湿度传感器 14.1.2 树莓派 14.1.3 设置树莓派 14.2 安装和配置软件 14.2.1 操作系统 14.2.2 初始配置 14.2.3 Wi-Fi设置 14.2.4 设置编程环境 14.2.5 通过SSH连接 14.2.6 Web框架Bottle 14.2.7 用flot绘制 14.2.8 关闭树莓派 14.3 搭建硬件 14.4 代码 14.4.1 处理传感器数据请求 14.4.2 绘制数据 14.4.3 update()方法 14.4.4 用于LED的JavaScript处理程序 14.4.5 添加交互性 14.5 完整代码 14.6 运行程序 14.7 小结 14.8 实验 附录A 软件安装 附录B 基础实用电子学 附录C 树莓派的建议和技巧 欢迎来到异步社区! 果核剥壳分享 www.ghxi.com 仅供个人学习
版权信息 书名:Python极客项目编程 ISBN:978-7-115-44976-4 本书由人民邮电出版社发行数字版。版权所有,侵权必究。 您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方 式复制和传播本书内容。 我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。 如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等 维权措施,并可能追究法律责任。 • 著    [美] Mahesh Venkitachalam   译    王海鹏   责任编辑 陈冀康 • 人民邮电出版社出版发行  北京市丰台区成寿寺路11号   邮编 100164  电子邮件 315@ptpress.com.cn   网址 http://www.ptpress.com.cn 果核剥壳分享 www.ghxi.com 仅供个人学习
• 读者服务热线:(010)81055410   反盗版热线:(010)81055315 果核剥壳分享 www.ghxi.com 仅供个人学习
版权声明 Simplified Chinese-language edition copyright © 2017 by Posts and Telecom Press. Copyright © 2016 by Mahesh Venkitachalam. Title of English-language original: Python Playground ,ISBN-13: 978-1-59327-604-1,published by No Starch Press. All rights reserved. 本书中文简体字版由美国No Starch出版社授权人民邮电出版社出版。未 经出版者书面许可,对本书任何部分不得以任何方式复制或抄袭。 版权所有,侵权必究。 果核剥壳分享 www.ghxi.com 仅供个人学习
内容提要 Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。 通过Python编程,我们能够解决现实生活中的很多任务。 本书通过14个有趣的项目,帮助和鼓励读者探索Python编程的世界。全 书共14章,分别介绍了通过Python编程实现的一些有趣项目,包括解析 iTunes播放列表、模拟人工生命、创建ASCII码艺术图、照片拼接、生成三维 立体图、创建粒子模拟的烟花喷泉效果、实现立体光线投射算法,以及用 Python结合Arduino和树莓派等硬件的电子项目。本书并不介绍Python语言的 基础知识,而是通过一系列不简单的项目,展示如何用Python来解决各种实 际问题,以及如何使用一些流行的Python库。 本书适合那些想要通过Python编程来进行尝试和探索的读者,适合了解 基本的Python语法和基本的编程概念的读者进一步学习,对于Python程序员 有一定的启发和参考价值。 果核剥壳分享 www.ghxi.com 仅供个人学习
致谢 写一本书就像跑马拉松。有人这么对我说过。但我确实知道,写这本书 考验了我的耐力极限,没有亲朋好友和家人为我摇旗呐喊,我不可能完成。 首先,我感谢我的妻子Hema,她不变的爱、鼓励和耐心,贯穿了完成这 项工作的整整两年时间。我感谢我的朋友Raviprakash Jayaraman,他是我所 有不确定的项目的“同谋”,也是本书的技术评审,我们一起吃了许多有趣的 午餐、看了不少电影,多次去逛S.P. Road Zoo。我感谢我的朋友Seby Kallarakkal,他推动我编写这本书,进行了多次有趣的讨论。我很感谢我的 朋友Santosh Hemachandra博士在快速傅里叶变换上的有益讨论。我感谢 Karthikeyan Chellappa,帮助我测试Python模块的安装,和我一起围绕 Kaikondrahalli湖跑步。我还要感谢Matthew Denham(我与他在Reddit上交 谈),他对万花尺(Spirograph)的数学知识提供了帮助。 我感谢No Starch出版社的Tyler Ortman和Bill Pollock,他们接受了我编写 本书的意向。还要感谢Serena Yang编辑本书的专业工作。我感谢Nicholas Kramer对本书的技术评阅。 我感谢我的父母A.V. Venkitachalam和N. Saraswathy,他们为我提供的教育远远超越了他们的财务能力。最后,我感 谢所有给我启发的老师,我希望一辈子做一名学生。 果核剥壳分享 www.ghxi.com 仅供个人学习
前言 欢迎阅读本书!在本书中,你会看到14个令人兴奋的项目,旨在鼓励你 探索Python编程的世界。这些项目涉及广泛的主题,如绘制类似万花尺的花 纹、生成ASCII码艺术图、3D渲染,以及根据音乐同步投射激光图像。除了 本身很有趣之外,这些项目的意图是提供一些起点,让你通过扩展每个项 目,来探索你自己的想法。 果核剥壳分享 www.ghxi.com 仅供个人学习
本书的目标读者 本书的目标读者,是所有想知道如何利用编程来理解和探索想法的人。 本书的项目假设你了解基本的Python语法和基本的编程概念,并假设你熟悉 高中数学知识。我已经尽了最大的努力,详细解释了所有项目中需要的数学 知识。 本书不会是你的第一本Python书。我不会指导你学习基本知识。但我会 通过一系列不简单的项目,向你展示如何用Python来解决各种实际问题。在 学习这些项目时,你将探索Python编程语言的细微差别,并学习如何使用一 些流行的Python库。但也许更重要的是,你将学习如何将问题分解成几个部 分,开发一个算法来解决这个问题,然后从头用Python来实现一个解决方 案。解决现实世界的问题可能很难,因为它们往往是开放式的,并且需要各 个领域的专业知识。但Python提供了一些工具,协助解决问题。克服困难, 寻找实际问题的解决方案,这是成为专家级程序员的旅途中最重要的环节。 果核剥壳分享 www.ghxi.com 仅供个人学习
本书的内容 让我们快速浏览一下本书各章的内容。 第一部分:热身运动 第1章展示了如何解析iTunes播放列表文件,并从中收集有用的信息,如 音轨长度和共同的音轨。在第2章中,我们使用参数方程及海龟作图法,绘 制类似万花尺产生的那些曲线。 第二部分:模拟生命 这部分是用数学模型来模拟现象。在第3章中,我们将学习如何实现 Conway游戏的生命游戏算法,产生动态的模式来创建其他模式,以模拟一种 人工生命。第4章展示了如何用Karplus-Strong算法来创建逼真的弹拨音。然 后,在第5章中,我们将学习如何实现类鸟群算法,模拟鸟类的聚集行为。 第三部分:图像之乐 这部分介绍使用Python读取和操作2D图像。第6章展示了如何根据图像 创建ASCII码艺术图。在第7章中,我们将进行照片拼接。在第8章中,我们 将学习如何生成三维立体图,它让人产生3D图像的错觉。 第四部分:走进三维 这一部分的项目使用OpenGL的3D图形库。第9章介绍使用OpenGL创建 简单3D图形的基本知识。在第10章中,我们将创建粒子模拟的烟花喷泉,它 用数学和OpenGL着色器来计算和渲染。在第11章中,我们将使用OpenGL着 色器来实现立体光线投射算法,来渲染立体数据,该技术常用于医疗影像, 如MRI和CT扫描。 果核剥壳分享 www.ghxi.com 仅供个人学习
第五部分:玩转硬件 在最后一部分中,我们将用Python来探索Arduino微控制器和树莓派。在 第12章中,我们将利用Arduino,通过一个简单电路读取并标绘传感器数据。 在第13章中,我们将利用Python和Arduino来控制两个旋转镜和激光器,生成 响应声音的激光秀。在第14章中,我们将使用树莓派打造一个基于网络的气 象监测系统。 果核剥壳分享 www.ghxi.com 仅供个人学习
为何选择Python Python是探索编程的理想语言。作为一种多范式语言,在如何组织程序 方面,它提供了极大的灵活性。你可以将Python视为脚本语言,简单地执行 代码,或将其视为过程语言,把程序组织成一组彼此调用的函数,或将其视 为面向对象语言,利用类、继承和模块来建立层次结构。这种灵活性让你可 以选择最适合特定项目的编程风格。 如果用更传统的语言来开发,如C或C ++,你必须先编译和链接代码, 然后才能运行它。使用Python,你可以编辑后直接运行它(在背后,Python 将你的代码编译成中间字节码,然后由Python解释器运行,但这些过程对用 户是透明的)。在实践中,用Python多次修改并运行代码,要容易很多。 此外,Python解释器是非常方便的工具,可用于检查代码语法,获得模 块的帮助,进行快速计算,甚至测试在开发中的代码。例如,我写Python代 码时,会打开三个窗口:文本编辑器、命令行和Python解释器。我在编辑器 中写代码时,会在解释器中导入我的函数或类,边开发边测试。 Python有一组非常小、简单而强大的数据结构。如果你理解了字符串、 列表、元组、字典、列表解析和基本控制结构,如for和while循环,那么你已 经开了个好头。 Python简洁而有表现力的语法,使得我们很容易只用几行代 码,就完成复杂的操作。而一旦熟悉Python内置的模块和第三方模块,你将 拥有大量的工具,用于解决真正的问题,就像本书中介绍的那样。从Python 中调用C/C++代码有标准的方式,反之亦然。因为在Python中可以找到库来 做几乎所有事情,我们很容易在大型项目中组合使用Python和其他语言模 块。这就是为什么Python被认为是了不起的胶水语言,它可以很容易地组合 使用不同的软件组件。本书最后的硬件项目展示了Python如何与Arduino和 果核剥壳分享 www.ghxi.com 仅供个人学习
JavaScript代码协作。真实的软件项目经常使用多种软件技术,Python非常适 合这种分层体系结构。 下面的例子展示了Python的易用性。在第14章中为树莓派天气监控器开 发代码时,我看着温度/湿度传感器的示波器输出,写下这一串数字: 0011011100000000000110100000000001010001 因为我不能用二进制讲话,所以启动了Python解释器并输入: >>> str = '0011011100000000000110100000000001010001' >>> len(str) 40 >>> [int(str[i:i+8], 2) for i in range(0, 40, 8)] [55, 0, 26, 0, 81] 这行代码将40位字符串切分转换成5个8位的整数,这是我可以理解的。 上述数据被解释为55.0%的湿度,温度为26.0摄氏度,校验和是55 + 26 = 81。 这个例子展示了如何实际使用Python解释器作为非常强大的计算器。你 不必写一个完整的程序就能快速计算,只要打开解释器,就可以开始。这只 是我喜欢Python的一个原因,原因还有很多,所以我认为你也会喜欢 Python。 Python的版本 本书基于Python 3.3.3,但所有代码都与Python 2.7.x和3.x兼容。 本书的代码 在本书中,我尽了最大的努力引导你详细研究每个项目的代码,一段接 一段地进行。你可以自己输入代码,或从https://github.com/electronut/pp/或 www.epubit. com.cn下载书中所有程序的完整源代码(单击Download Zip选 果核剥壳分享 www.ghxi.com 仅供个人学习
The above is a preview of the first 20 pages. Register to read the complete e-book.