新書推薦:

《
清末民国骈文批评转型研究
》
售價:HK$
82.5

《
中国汉江流域观赏植物资源图鉴
》
售價:HK$
217.8

《
BIM概论与土建建模
》
售價:HK$
65.8

《
身体秩序与法律规训——传统中国的“身体法治”面相(国家哲学社会科学成果文库)
》
售價:HK$
218.9

《
日本佛教史纲
》
售價:HK$
92.4

《
给孩子的安全教育漫画:防走失、防拐骗 少儿安全教育专家GY局长 让孩子全面掌握保护自己方法
》
售價:HK$
41.8

《
多头政体——参与和反对(汉译名著18)
》
售價:HK$
61.6

《
政治经济学(汉译名著18)
》
售價:HK$
127.6
|
| 編輯推薦: |
《Python编程 从入门到实践 第3版》 编程入门就选蟒蛇书! 【经典】Python入门经典,常居Amazon等编程类图书TOP榜 【热销】热销全球,以12个语种发行,影响超过 250 万读者 【口碑】好评如潮,第2版豆瓣评分 9.2,Amazon 4.7 星评 【升级】代码基于Python3.11升级,涵盖语言新特性 【资源丰富】随书代码 + PPT课件 + 配套视频 + 速查手册 【自学利器】零基础书籍,自学轻松,附赠学习路线图 【品质提升】精雕细琢,邀请20位一线开发人员审读全书 学完蟒蛇书,你能打下坚实的编程基础、习得优秀的编程习惯,更会构建让自己终身受益的计算思维,而这也是AIGC时代与AI共生的基本技能。 《Python编程快速上手——让烦琐工作自动化(第3版)》 【第3版重磅升级】零基础友好,从小白到高手的全程护航 中文版销量35万+,百万级“蟒蛇书”作者埃里克·马瑟斯倾情作序推荐! 优质UP主@五里墩茶社 倾力审校 + 视频带练,精研夯基础,视频解难点,学习之路不孤单! 五大核心看点,直击痛点! 看点一:八大模块快速打好Python基础,从概
|
| 內容簡介: |
9787115613639 Python编程 从入门到实践 第3版 109.80 9787115684882 Python编程快速上手——让烦琐工作自动化(第3版) 109.80 9787115642363 Python极客项目编程(第2版) 69.80 9787115562883 Python编程实战 妙趣横生的项目之旅 99.90 《Python编程 从入门到实践 第3版》 本书是享誉全球的Python入门书,影响了超过250万读者。全书分两部分:第一部分介绍用Python编程所必须了解的基本概念,包括强大的Python库和工具,以及列表、字典、if语句、类、文件和异常、代码测试等内容;第二部分将理论付诸实践,讲解如何开发三个项目,包括简单的2D游戏、利用数据生成交互式的信息图以及创建和定制简单的Web应用,并帮助读者解决常见编程问题和困惑。第3版进行了全面修订:使用了文本编辑器VS Code,新增了介绍removeprefix()方法和removesuffix()方法的内容,并且在项目中利用了Matplotlib和Plotly的最新特性,等等。 《Python编程快速上手——让烦琐工作自动化(第3版)》 这是一本面向初学者的 Python 编程实用指南,用“讲故事 + 做项目”的方式带你走进Python 世界。 本书的前半部分(第 1~8 章)用浅显易懂的语言将 Python 基础知识、语法、数据结构等串起来,后半部分(第 9~24 章)则把这些概念直接投入真实场景,让 Python 程序替你批量整理文件夹、填报电子表格、抓取网页数据、生成 PDF 报告、定时发送邮件,甚至让计算机“开口说话”。本书的案例聚焦日常痛点,会先讲思路,再给代码,并在实践项目中分步骤拆解和演 示编程实践,非常有助于读者边学边上手。值得一提的是,本书还结合大语言模型(LLM)给出了一些更加巧妙的实践技巧。 无论你是想要轻松学习编程的入门级读者,还是想借助程序自动化处理事务的非专业人士,这本久经考验的 Python 教程都将是你不容错过的选择。 《Python极客项目编程(第2版)》 Python是一种解释型、面向对象、动态数据类型的高级程序设计语言,通过Python编程能够解决现实生活中的很多问题。本书并不介绍Python语言的基础知识,而是通过一系列有趣的项目,展示如何用Python解决各种实际问题,以及如何使用一些流行的Python库。 本书共15章,每章讲解一个有趣的Python项目,这些项目可以分成5个部分:第一部分是热身,包括科赫雪花、繁花曲线;第二部分是模拟生命,包括康威生命游戏、使用Karplus-Strong算法生成泛音、群体行为模拟;第三部分是好玩的图形,包括文本图形、照片马赛克、裸眼立体画;第四部分是走进三维,包括理解OpenGL、圆环面上的康威生命游戏、体渲染;第五部分是玩转硬件,包括在树莓派Pico上实现Karplus-Strong算法、树莓派激光音乐秀、物联网花园、树莓派音频机器学习。此外,本书还通过附录介绍如何安装Python和设置树莓派。 本书适合已经了解了基本的Python语法和编程知识、想要尝试和探索通过Python编程解决实际问题的读者阅读,也可作为Python初学者练习项目开发的参考用书。 《Python编程实战 妙趣横生的项目之旅》 《Python编程实战:妙趣横生的项目之旅》基于Python语言,通过项目展示Python的奇妙应用,适合Python初学者学习。在本书中,你将使用Python编程语言模拟探索火星、木星以及银河系最遥远的地方,体验诗人的意境,了解高级的金融知识等。你还会学到各种各样的技术,如马尔可夫链分析技术、蒙特卡罗模拟、图像叠加技术、基因遗传算法等。与此同时,你还会学习一些模块的使用方法,例如pygame、Pylint、pydocstyle、Tkinter、python-docx、Matplotlib和pillow等。 《Python编程实战:妙趣横生的项目之旅》基于一些有趣的项目进行讲解,能够让读者在新奇的项目案例中体验学习Python的乐趣。此外,读者还能将自己所学的知识与实际的应用程序开发、数据库设计和解决实际问题联系起来,提升自己的项目实践能力。
|
| 關於作者: |
《Python编程 从入门到实践 第3版》 埃里克·马瑟斯(Eric Matthes) 缔造技术图书销售奇迹的作家,作品影响了全球数百万读者。 致力于推动Python编程在全球的普及。执教计算机科学和数学25年,教学风格轻松有趣,深受学生喜爱。他对编程的热爱和丰厚的教学经验淋漓尽致地体现在了蟒蛇书《Python编程:从入门到编程》中。 蟒蛇书备受读者推崇。无论是熟练掌握其他编程语言的程序员,还是年仅10岁的萌新,都是本书的拥趸。本书在全球范围内被翻译为12种语言,累计热销超过250万册,其中仅中文版前两版的销量就超过了120万册。 《Python编程快速上手——让烦琐工作自动化(第3版)》 阿尔·斯维加特(Al Sweigart)软件开发人员、 美术师、Python软件基金会会士(fellow);著有多部适合初学者阅读的编程著作,其中包括Invent Your Own Computer Games with Python、The Big Book of Small Python Projects 和Beyond the Basic Stuff with Python(均由 No Starch 出版社出版);曾在多个PyCon大会上担任国际演讲嘉宾。 《Python极客项目编程(第2版)》 马赫什·文基塔查拉姆(Mahesh Venkitachalam)是一名计算机图形学和嵌入式系统顾问,拥有二十余年从业经验。他是Electronut Labs的创始人,该公司以开发充满创意的开源硬件著称。他经常撰写有关编程和电子技术的博客。 《Python编程实战 妙趣横生的项目之旅》 李·沃恩(Lee Vaughan)是一位程序员和教育工作者。作为埃克森美孚公司的主管级科学家,他负责构建并审查计算机模型,开发和测试软件,并培训地球科学家和工程师。他还通过自己编写的图书,帮助很多读者磨炼 Python 编程技能,并从中获得乐趣。
|
| 目錄:
|
《Python编程 从入门到实践 第3版》 第 一部分 基础知识 第 1章 起步 2 1.1 编程环境简介 2 1.1.1 Python版本 2 1.1.2 运行Python代码片段 2 1.1.3 编辑器VS Code简介 3 1.2 在各种操作系统中搭建Python编程 环境 3 1.2.1 在Windows系统中搭建Python编程环境 4 1.2.2 在macOS系统中搭建Python编程环境 5 1.2.3 在Linux系统中搭建Python 编程环境 6 1.3 运行Hello World程序 7 1.3.1 给VS Code安装Python扩展 7 1.3.2 运行程序hello_world.py 8 1.4 排除安装问题 8 1.5 从终端运行Python程序 9 1.5.1 在Windows系统中从终端 运行Python程序 9 1.5.2 在Linux和macOS系统中从 终端运行Python程序 10 1.6 小结 11 第 2章 变量和简单的数据类型 12 2.1 运行hello_world.py时发生的情况 12 2.2 变量 12 2.2.1 变量的命名和使用 13 2.2.2 如何在使用变量时避免命名 错误 14 2.2.3 变量是标签 15 2.3 字符串 16 2.3.1 使用方法修改字符串的大小写 16 2.3.2 在字符串中使用变量 17 2.3.3 使用制表符或换行符来添加 空白 18 2.3.4 删除空白 18 2.3.5 删除前缀 20 2.3.6 如何在使用字符串时避免语法错误 20 2.4 数 22 2.4.1 整数 22 2.4.2 浮点数 23 2.4.3 整数和浮点数 23 2.4.4 数中的下划线 24 2.4.5 同时给多个变量赋值 24 2.4.6 常量 24 2.5 注释 25 2.5.1 如何编写注释 25 2.5.2 该编写什么样的注释 25 2.6 Python之禅 26 2.7 小结 27 第3章 列表简介 28 3.1 列表是什么 28 3.1.1 访问列表元素 28 3.1.2 索引从0而不是1开始 29 3.1.3 使用列表中的各个值 30 3.2 修改、添加和删除元素 30 3.2.1 修改列表元素 31 3.2.2 在列表中添加元素 31 3.2.3 从列表中删除元素 32 3.3 管理列表 37 3.3.1 使用sort()方法对列表进行永久排序 37 3.3.2 使用sorted()函数对列表进行临时排序 37 3.3.3 反向打印列表 38 3.3.4 确定列表的长度 39 3.4 使用列表时避免索引错误 40 3.5 小结 41 第4章 操作列表 42 4.1 遍历整个列表 42 4.1.1 深入研究循环 43 4.1.2 在for循环中执行更多的操作 44 4.1.3 在for循环结束后执行一些 操作 45 4.2 避免缩进错误 45 4.2.1 忘记缩进 46 4.2.2 忘记缩进额外的代码行 46 4.2.3 不必要的缩进 47 4.2.4 循环后不必要的缩进 47 4.2.5 遗漏冒号 48 4.3 创建数值列表 49 4.3.1 使用range()函数 49 4.3.2 使用range()创建数值列表 50 4.3.3 对数值列表执行简单的统计 计算 51 4.3.4 列表推导式 52 4.4 使用列表的一部分 53 4.4.1 切片 53 4.4.2 遍历切片 54 4.4.3 复制列表 55 4.5 元组 57 4.5.1 定义元组 58 4.5.2 遍历元组中的所有值 58 4.5.3 修改元组变量 59 4.6 设置代码格式 60 4.6.1 格式设置指南 60 4.6.2 缩进 60 4.6.3 行长 61 4.6.4 空行 61 4.6.5 其他格式设置指南 61 4.7 小结 62 第5章 if语句 63 5.1 一个简单的示例 63 5.2 条件测试 64 5.2.1 检查是否相等 64 5.2.2 如何在检查是否相等时忽略 大小写 64 5.2.3 检查是否不等 65 5.2.4 数值比较 66 5.2.5 检查多个条件 66 5.2.6 检查特定的值是否在列表中 67 5.2.7 检查特定的值是否不在列表中 68 5.2.8 布尔表达式 68 5.3 if语句 69 5.3.1 简单的if语句 69 5.3.2 if-else语句 70 5.3.3 if-elif-else语句 71 5.3.4 使用多个elif代码块 72 5.3.5 省略else代码块 73 5.3.6 测试多个条件 73 5.4 使用if语句处理列表 76 5.4.1 检查特殊元素 76 5.4.2 确定列表非空 77 5.4.3 使用多个列表 77 5.5 设置if语句的格式 79 5.6 小结 80 第6章 字典 81 6.1 一个简单的字典 81 6.2 使用字典 82 6.2.1 访问字典中的值 82 6.2.2 添加键值对 83 6.2.3 从创建一个空字典开始 83 6.2.4 修改字典中的值 84 6.2.5 删除键值对 85 6.2.6 由类似的对象组成的字典 86 6.2.7 使用get()来访问值 87 6.3 遍历字典 88 6.3.1 遍历所有的键值对 88 6.3.2 遍历字典中的所有键 90 6.3.3 按特定的顺序遍历字典中的 所有键 92 6.3.4 遍历字典中的所有值 92 6.4 嵌套 94 6.4.1 字典列表 94 6.4.2 在字典中存储列表 97 6.4.3 在字典中存储字典 98 6.5 小结 100 第7章 用户输入和while循环 101 7.1 input()函数的工作原理 101 7.1.1 编写清晰的提示 102 7.1.2 使用int()来获取数值输入 103 7.1.3 求模运算符 104 7.2 while循环简介 105 7.2.1 使用while循环 105 7.2.2 让用户选择何时退出 106 7.2.3 使用标志 107 7.2.4 使用break退出循环 108 7.2.5 在循环中使用continue 109 7.2.6 避免无限循环 110 7.3 使用while循环处理列表和字典 111 7.3.1 在列表之间移动元素 111 7.3.2 删除为特定值的所有列表 元素 112 7.3.3 使用用户输入填充字典 113 7.4 小结 114 第8章 函数 115 8.1 定义函数 115 8.1.1 向函数传递信息 116 8.1.2 实参和形参 116 8.2 传递实参 117 8.2.1 位置实参 117 8.2.2 关键字实参 119 8.2.3 默认值 119 8.2.4 等效的函数调用 120 8.2.5 避免实参错误 121 8.3 返回值 122 8.3.1 返回简单的值 122 8.3.2 让实参变成可选的 123 8.3.3 返回字典 124 8.3.4 结合使用函数和while循环 125 8.4 传递列表 127 8.4.1 在函数中修改列表 128 8.4.2 禁止函数修改列表 130 8.5 传递任意数量的实参 131 8.5.1 结合使用位置实参和任意数量的实参 132 8.5.2 使用任意数量的关键字实参 133 8.6 将函数存储在模块中 134 8.6.1 导入整个模块 134 8.6.2 导入特定的函数 135 8.6.3 使用as给函数指定别名 136 8.6.4 使用as给模块指定别名 136 8.6.5 导入模块中的所有函数 137 8.7 函数编写指南 137 8.8 小结 139 第9章 类 140 9.1 创建和使用类 140 9.1.1 创建Dog类 141 9.1.2 根据类创建实例 142 9.2 使用类和实例 144 9.2.1 Car类 144 9.2.2 给属性指定默认值 145 9.2.3 修改属性的值 146 9.3 继承 149 9.3.1 子类的__init__()方法 149 9.3.2 给子类定义属性和方法 151 9.3.3 重写父类中的方法 152 9.3.4 将实例用作属性 152 9.3.5 模拟实物 154 9.4 导入类 155 9.4.1 导入单个类 155 9.4.2 在一个模块中存储多个类 157 9.4.3 从一个模块中导入多个类 158 9.4.4 导入整个模块 158 9.4.5 导入模块中的所有类 159 9.4.6 在一个模块中导入另一个 模块 159 9.4.7 使用别名 160 9.4.8 找到合适的工作流程 161 9.5 Python标准库 161 9.6 类的编程风格 162 9.7 小结 163 第 10章 文件和异常 164 10.1 读取文件 164 10.1.1 读取文件的全部内容 164 10.1.2 相对文件路径和绝对文件 路径 166 10.1.3 访问文件中的各行 167 10.1.4 使用文件的内容 168 10.1.5 包含100万位的大型文件 169 10.1.6 圆周率值中包含你的 生日吗 169 10.2 写入文件 170 10.2.1 写入一行 171 10.2.2 写入多行 171 10.3 异常 172 10.3.1 处理ZeroDivisionError 异常 172 10.3.2 使用try-except代码块 173 10.3.3 使用异常避免崩溃 173 10.3.4 else代码块 174 10.3.5 处理FileNotFoundError 异常 175 10.3.6 分析文本 177 10.3.7 使用多个文件 177 10.3.8 静默失败 179 10.3.9 决定报告哪些错误 179 10.4 存储数据 181 10.4.1 使用json.dumps()和json.loads() 181 10.4.2 保存和读取用户生成的 数据 182 10.4.3 重构 184 10.5 小结 186 第 11章 测试代码 187 11.1 使用pip安装pytest 187 11.1.1 更新pip 188 11.1.2 安装pytest 188 11.2 测试函数 189 11.2.1 单元测试和测试用例 190 11.2.2 可通过的测试 190 11.2.3 运行测试 191 11.2.4 未通过的测试 191 11.2.5 在测试未通过时怎么办 192 11.2.6 添加新测试 193 11.3 测试类 195 11.3.1 各种断言 195 11.3.2 一个要测试的类 195 11.3.3 测试AnonymousSurvey类 197 11.3.4 使用夹具 198 11.4 小结 200 第二部分 项 目 项目1 外星人入侵 202 第 12章 武装飞船 203 12.1 规划项目 203 12.2 安装Pygame 204 12.3 开始游戏项目 204 12.3.1 创建Pygame窗口及响应用户输入 204 12.3.2 控制帧率 206 12.3.3 设置背景色 207 12.3.4 创建Settings类 207 12.4 添加飞船图像 208 12.4.1 创建Ship类 209 12.4.2 在屏幕上绘制飞船 211 12.5 重构:_check_events()方法和_update_screen()方法 212 12.5.1 _check_events()方法 212 12.5.2 _update_screen()方法 213 12.6 驾驶飞船 214 12.6.1 响应按键 214 12.6.2 允许持续移动 214 12.6.3 左右移动 216 12.6.4 调整飞船的速度 217 12.6.5 限制飞船的活动范围 218 12.6.6 重构_check_events() 219 12.6.7 按Q键退出 220 12.6.8 在全屏模式下运行游戏 220 12.7 简单回顾 221 12.7.1 alien_invasion.py 221 12.7.2 settings.py 221 12.7.3 ship.py 221 12.8 射击 222 12.8.1 添加子弹设置 222 12.8.2 创建Bullet类 222 12.8.3 将子弹存储到编组中 223 12.8.4 开火 224 12.8.5 删除已消失的子弹 226 12.8.6 限制子弹数量 226 12.8.7 创建_update_bullets() 方法 227 12.9 小结 228 第 13章 外星人 229 13.1 项目回顾 229 13.2 创建第 一个外星人 230 13.2.1 创建Alien类 230 13.2.2 创建Alien实例 231 13.3 创建外星舰队 232 13.3.1 创建一行外星人 232 13.3.2 重构_create_fleet() 234 13.3.3 添加多行外星人 235 13.4 让外星舰队移动 237 13.4.1 向右移动外星舰队 237 13.4.2 创建表示外星舰队移动方向的设置 238 13.4.3 检查外星人是否到达了屏幕边缘 239 13.4.4 向下移动外星舰队并改变移动方向 239 13.5 击落外星人 240 13.5.1 检测子弹和外星人的碰撞 240 13.5.2 为测试创建大子弹 242 13.5.3 生成新的外星舰队 242 13.5.4 加快子弹的速度 243 13.5.5 重构_update_bullets() 243 13.6 结束游戏 244 13.6.1 检测外星人和飞船的碰撞 244 13.6.2 响应外星人和飞船的碰撞 245 13.6.3 有外星人到达屏幕下边缘 247 13.6.4 游戏结束 248 13.7 确定应运行游戏的哪些部分 249 13.8 小结 249 第 14章 记分 250 14.1 添加Play按钮 250 14.1.1 创建Button类 250 14.1.2 在屏幕上绘制按钮 252 14.1.3 开始游戏 253 14.1.4 重置游戏 254 14.1.5 将Play按钮切换到非活动 状态 254 14.1.6 隐藏光标 255 14.2 提高难度 256 14.2.1 修改速度设置 256 14.2.2 重置速度 258 14.3 记分 258 14.3.1 显示得分 259 14.3.2 创建记分牌 260 14.3.3 在外星人被击落时更新 得分 261 14.3.4 重置得分 262 14.3.5 将每个被击落的外星人都 计入得分 262 14.3.6 提高分数 263 14.3.7 对得分进行舍入 264 14.3.8 最高分 265 14.3.9 显示等级 267 14.3.10 显示余下的飞船数 269 14.4 小结 272 项目2 数据可视化 273 第 15章 生成数据 274 15.1 安装Matplotlib 274 15.2 绘制简单的折线图 275 15.2.1 修改标签文字和线条粗细 276 15.2.2 校正绘图 277 15.2.3 使用内置样式 278 15.2.4 使用scatter()绘制散点图 并设置样式 279 15.2.5 使用scatter()绘制一系 列点 280 15.2.6 自动计算数据 281 15.2.7 定制刻度标记 282 15.2.8 定制颜色 282 15.2.9 使用颜色映射 283 15.2.10 自动保存绘图 284 15.3 随机游走 284 15.3.1 创建RandomWalk类 284 15.3.2 选择方向 285 15.3.3 绘制随机游走图 286 15.3.4 模拟多次随机游走 287 15.3.5 设置随机游走图的样式 287 15.4 使用Plotly模拟掷骰子 292 15.4.1 安装Plotly 292 15.4.2 创建Die类 292 15.4.3 掷骰子 293 15.4.4 分析结果 293 15.4.5 绘制直方图 294 15.4.6 定制绘图 295 15.4.7 同时掷两个骰子 296 15.4.8 进一步定制 298 15.4.9 同时掷两个面数不同的 骰子 298 15.4.10 保存绘图 299 15.5 小结 300 第 16章 下载数据 301 16.1 CSV文件格式 301 16.1.1 解析CSV文件头 302 16.1.2 打印文件头及其位置 302 16.1.3 提取并读取数据 303 16.1.4 绘制温度图 304 16.1.5 datetime模块 305 16.1.6 在图中添加日期 306 16.1.7 涵盖更长的时间 307 16.1.8 再绘制一个数据系列 308 16.1.9 给图中区域着色 309 16.1.10 错误检查 310 16.2 制作全球地震散点图:GeoJSON 格式 313 16.2.1 地震数据 313 16.2.2 查看GeoJSON数据 313 16.2.3 创建地震列表 316 16.2.4 提取震级 316 16.2.5 提取位置数据 317 16.2.6 绘制地震散点图 318 16.2.7 指定数据的另一种方式 319 16.2.8 定制标记的尺寸 320 16.2.9 定制标记的颜色 321 16.2.10 其他渐变 323 16.2.11 添加悬停文本 323 16.3 小结 325 第 17章 使用API 326 17.1 使用API 326 17.1.1 Git和GitHub 326 17.1.2 使用API调用请求数据 327 17.1.3 安装Requests 327 17.1.4 处理API响应 328 17.1.5 处理响应字典 329 17.1.6 概述最受欢迎的仓库 331 17.1.7 监控API的速率限制 332 17.2 使用Plotly可视化仓库 332 17.2.1 设置图形的样式 334 17.2.2 添加定制工具提示 335 17.2.3 添加可单击的链接 336 17.2.4 定制标记颜色 337 17.2.5 深入了解Plotly和GitHub API 338 17.3 Hacker News API 338 17.4 小结 341 项目3 Web应用程序 342 第 18章 Django入门 343 18.1 建立项目 343 18.1.1 制定规范 343 18.1.2 建立虚拟环境 344 18.1.3 激活虚拟环境 344 18.1.4 安装Django 345 18.1.5 在Django中创建项目 345 18.1.6 创建数据库 346 18.1.7 查看项目 346 18.2 创建应用程序 348 18.2.1 定义模型 349 18.2.2 激活模型 350 18.2.3 Django管理网站 351 18.2.4 定义模型Entry 353 18.2.5 迁移模型Entry 354 18.2.6 向管理网站注册Entry 354 18.2.7 Django shell 355 18.3 创建网页:学习笔记主页 357 18.3.1 映射URL 357 18.3.2 编写视图 359 18.3.3 编写模板 360 18.4 创建其他网页 361 18.4.1 模板继承 361 18.4.2 显示所有主题的页面 363 18.4.3 显示特定主题的页面 366 18.5 小结 369 第 19章 用户账户 370 19.1 让用户能够输入数据 370 19.1.1 添加新主题 370 19.1.2 添加新条目 374 19.1.3 编辑条目 378 19.2 创建用户账户 381 19.2.1 应用程序accounts 381 19.2.2 将应用程序accounts添加 到settings.py中 381 19.2.3 包含应用程序accounts的URL 382 19.2.4 登录页面 382 19.2.5 注销 385 19.2.6 注册页面 386 19.3 让用户拥有自己的数据 389 19.3.1 使用@login_required限制 访问 389 19.3.2 将数据关联到用户 391 19.3.3 只允许用户访问自己的 主题 393 19.3.4 保护用户的主题 394 19.3.5 保护页面edit_entry 394 19.3.6 将新主题关联到当前用户 395 19.4 小结 396 第 20章 设置应用程序的样式并部署 397 20.1 设置项目“学习笔记”的样式 397 20.1.1 应用程序django-bootstrap5 397 20.1.2 使用Bootstrap设置项目 “学习笔记”的样式 398 20.1.3 修改base.html 399 20.1.4 使用jumbotron设置主页的样式 404 20.1.5 设置登录页面的样式 405 20.1.6 设置页面topics的样式 406 20.1.7 设置页面topic中条目的 样式 407 20.2 部署“学习笔记” 409 20.2.1 注册Platform.sh账户 409 20.2.2 安装Platform.sh CLI 409 20.2.3 安装platformshconfig 410 20.2.4 创建文件requirements.txt 410 20.2.5 其他部署需求 411 20.2.6 添加配置文件 411 20.2.7 为部署到Platform.sh而 修改settings.py 414 20.2.8 使用Git跟踪项目文件 415 20.2.9 在Platform.sh上创建项目 417 20.2.10 推送到Platform.sh 418 20.2.11 查看线上项目 419 20.2.12 改进Platform.sh部署 420 20.2.13 创建定制错误页面 422 20.2.14 继续开发 423 20.2.15 将项目从Platform.sh上 删除 424 20.3 小结 425 附录A 安装及故障排除 426 附录B 文本编辑器和IDE 430 附录C 寻求帮助 436 附录D 使用Git进行版本控制 440 附录E 部署故障排除 449 《Python编程快速上手——让烦琐工作自动化(第3版)》 第 一部分 编程基础 第 1 章 Python 基础 3 1.1 在交互式环境中输入表达式 3 1.2 整型、浮点型和字符串数据类型 7 1.3 字符串的拼接和复制 8 1.4 在变量中存储值 9 1.4.1 赋值语句 9 1.4.2 变量名 10 1.5 编写第 一个程序 11 1.6 程序详解 13 1.6.1 注释 13 1.6.2 函数 print() 13 1.6.3 函数 input() 14 1.6.4 问候语 14 1.6.5 函数 len() 14 1.6.6 函数 str()、int() 和 float() 15 1.6.7 函数 type() 18 1.6.8 函数 round() 和 abs() 19 1.7 计算机如何使用二进制数存储数据 20 1.8 小结 22 第 2 章 if-else 和流程控制 23 2.1 布尔值 24 2.2 比较运算符 24 2.3 布尔运算符 26 2.4 混合使用布尔运算符和比较运算符 28 2.5 流程控制的组成部分 28 2.5.1 条件 29 2.5.2 代码块 29 2.5.3 程序执行 29 2.6 流程控制语句 30 2.6.1 if 语句 30 2.6.2 else 语句 31 2.6.3 elif 语句 32 2.7 小程序 1:反转日 36 2.8 小程序 2:不诚实的容量计算器 37 2.9 小结 39 第 3 章 循环 41 3.1 while 循环语句 41 3.1.1 一个恼人的 while 循环 43 3.1.2 break 语句 44 3.1.3 continue 语句 46 3.2 for 循环和函数 range() 49 3.2.1 等价的 while 循环 51 3.2.2 range() 的参数 51 3.3 导入模块 52 3.4 使用 sys.exit() 提前结束程序 53 3.5 小程序 3:猜数 54 3.6 小程序 4:剪刀、石头、布 56 3.7 小结 60 第 4 章 函数 61 4.1 创建函数 61 4.2 实参和形参 62 4.3 返回值和 return 语句 64 4.4 None 值 65 4.5 具名形参 65 4.6 调用栈 67 4.7 局部作用域和全局作用域 69 4.7.1 作用域规则 70 4.7.2 global 语句 72 4.7.3 确定变量是全局变量还是局部变量 73 4.8 异常处理 74 4.9 小程序 5:之字形运动 76 4.10 小程序 6:绘制尖峰 78 4.11 小结 80 第 5 章 调试 81 5.1 引发异常 81 5.2 断言 83 5.3 日志 84 5.3.1 logging 模块 84 5.3.2 日志文件 86 5.3.3 一种糟糕的做法:使用 print() 进行调试 86 5.3.4 日志等级 87 5.3.5 禁用日志 87 5.4 Mu 的调试器 88 5.4.1 调试一个执行加法运算的程序 89 5.4.2 设置断点 91 5.5 小结 92 第 6 章 列表 93 6.1 列表数据类型 93 6.1.1 索引 94 6.1.2 负数索引 95 6.1.3 切片 95 6.1.4 函数 len() 96 6.1.5 更新列表中的值 96 6.1.6 拼接和复制 97 6.1.7 del 语句 97 6.2 使用列表 97 6.2.1 for 循环与列表 99 6.2.2 运算符 in 和 not in 100 6.2.3 多重赋值技巧 100 6.2.4 列表元素枚举 101 6.2.5 随机选择和随机排序 101 6.3 增强赋值运算符 102 6.4 方法 103 6.4.1 查找值 103 6.4.2 添加值 104 6.4.3 删除值 105 6.4.4 对值进行排序 106 6.4.5 以相反的顺序排列值 107 6.5 短路的布尔运算符 108 6.6 小程序 7:列表版魔力八号球 109 6.7 序列数据类型 109 6.7.1 可变数据类型和不可变数据类型 110 6.7.2 元组数据类型 111 6.7.3 转换为列表和元组 112 6.8 引用 113 6.8.1 实参 114 6.8.2 函数 copy() 和 deepcopy() 115 6.9 小程序 8:黑客帝国屏保 116 6.10 小结 119 第 7 章 字典与数据结构化 121 7.1 字典数据类型 121 7.1.1 比较字典和列表 122 7.1.2 返回键和值 124 7.1.3 检查指定的键是否存在 125 7.1.4 设置默认值 126 7.2 使用数据结构对实物建模 127 7.3 项目 1:交互式国际象棋棋盘模拟器 129 7.3.1 第 1 步:初始化 130 7.3.2 第 2 步:创建棋盘模板 130 7.3.3 第 3 步:显示棋盘的当前状态 131 7.3.4 第 4 步:操作棋盘 133 7.4 嵌套的字典和列表 135 7.5 小结 136
第 8 章 字符串与文本编辑 137 8.1 使用字符串 137 8.1.1 字符串字面量 137 8.1.2 索引和切片 140 8.1.3 运算符 in 和 not in 141 8.2 f- 字符串 142 8.3 f- 字符串的替代方法:%s 和 format() 142 8.4 非常有用的字符串方法 143 8.4.1 修改大小写 143 8.4.2 检查字符串的特征 145 8.4.3 检查字符串的开头和结尾部分 147 8.4.4 字符串合并和拆分 147 8.4.5 文本对齐和居中 148 8.4.6 删除空白 149 8.5 字符的数值码点 150 8.6 复制并粘贴字符串 150 8.7 项目 2:在维基百科文章中添加项目符号 152 8.7.1 第 1 步:从剪贴板复制并粘贴 152 8.7.2 第 2 步:按行拆分文本 153 8.7.3 第 3 步:合并修改后的行 154 8.8 小程序 9:儿童黑话 154 8.9 小结 158 第二部分 任务自动化 第 9 章 使用正则表达式匹配文本模式 161 9.1 在不使用正则表达式的情况下查找文本模式 162 9.2 使用正则表达式查找文本模式 163 9.3 正则表达式语法 165 9.3.1 使用括号进行分组 165 9.3.2 使用转义字符 166 9.3.3 匹配可替代编组 166 9.3.4 返回所有的匹配内容 167 9.4 修饰符语法:要匹配什么字符 168 9.4.1 使用字符集和反向字符集 168 9.4.2 使用简写字符集 169 9.4.3 使用句点字符匹配任何字符 169 9.4.4 注意要匹配的字符是否正确 170 9.5 量词语法:匹配多少个修饰符 170 9.5.1 匹配可选模式 170 9.5.2 匹配零个或多个修饰符 171 9.5.3 匹配一个或多个修饰符 172 9.5.4 匹配指定数量的修饰符 172 9.6 贪婪匹配和非贪婪匹配 173 9.6.1 匹配任何内容 174 9.6.2 匹配换行符 175 9.7 在字符串开头和末尾查找匹配的内容 175 9.8 匹配时不区分大小写 177 9.9 替换字符串 178 9.10 使用详细模式管理复杂的正则表达式 178 9.11 组合使用 re.IGNORECASE、re.DOTALL和 re.VERBOSE 179 9.12 项目 3:从大型文档中提取联系人信息 179 9.12.1 第 1 步:创建用于匹配电话号码的正则表达式 180 9.12.2 第 2 步:创建用于匹配电子邮件地址的正则表达式 181 9.12.3 第 3 步:找出剪贴板文本中所有匹配的内容 182 9.12.4 第 4 步:将匹配的内容合并为单个字符串 182 9.12.5 文本模式识别的其他用途 183 9.13 Humre:一个用于提高正则表达式可读性的模块 184 9.14 小结 188 第 10 章 读写文件 189 10.1 文件和文件路径 189 10.1.1 标准化路径分隔符 190 10.1.2 合并路径 191 10.1.3 访问当前工作目录 192 10.1.4 访问主目录 193 10.1.5 指定绝对路径与相对路径 193 10.1.6 新建文件夹 194 10.1.7 处理绝对路径和相对路径 195 10.1.8 获取文件路径的组成部分 196 10.1.9 获取文件大小和时间戳 197 10.1.10 使用 glob 模式查找文件 198 10.1.11 检查路径是否有效 199 10.2 文件读写过程 200 10.2.1 打开文件 201 10.2.2 读取文件内容 202 10.2.3 写入文件 203 10.2.4 使用 with 语句 204 10.3 使用 shelve 模块保存变量 204 10.4 项目 4:生成随机的考卷文件 206 10.4.1 第 1 步:将测验数据存储在字典中 206 10.4.2 第 2 步:创建用于存储测验数据的文件 207 10.4.3 第 3 步:创建选项 208 10.4.4 第 4 步:将内容写入文件 209 10.5 小结 210 第 11 章 组织文件 213 11.1 shutil 模块 213 11.1.1 复制文件和文件夹 214 11.1.2 移动和重命名文件和文件夹 215 11.1.3 永久性删除文件和文件夹 215 11.1.4 移入回收站 216 11.2 遍历目录树 217 11.3 使用 zipfile 模块压缩文件 219 11.3.1 创建和添加到 ZIP 文件 219 11.3.2 读取 ZIP 文件 220 11.3.3 解压缩 ZIP 文件 221 11.4 项目 5:将文件夹备份到 ZIP 文件中 221 11.4.1 第 1 步:确定 ZIP 文件的名称 222 11.4.2 第 2 步:新建 ZIP 文件 223 11.4.3 第 3 步:遍历目录树 223 11.4.4 使用同样的技巧编写类似程序 224 11.5 小结 224 第 12 章 设计并部署命令行程序 227 12.1 程序的别名 227 12.2 使用终端 228 12.2.1 命令 cd、pwd、dir 和 ls 229 12.2.2 环境变量 PATH 230 12.2.3 编辑环境变量 PATH 231 12.2.4 命令 which 和 where 232 12.3 虚拟环境 232 12.4 使用 pip 安装 Python 包 234 12.5 有自我认知的 Python 程序 235 12.6 基于文本的程序设计 236 12.6.1 简短的命令名 237 12.6.2 命令行参数 238 12.6.3 剪贴板 I/O 238 12.6.4 使用 Bext 显示五颜六色的文本 239 12.6.5 清空终端窗口 240 12.6.6 声音和文本通知 240 12.7 小程序 10:暴风雪 241 12.8 使用 PyMsgBox 弹出消息框 243 12.9 部署 Python 程序 243 12.9.1 Windows 243 12.9.2 macOS 245 12.9.3 Ubuntu Linux 245 12.10 小程序 11:复制当前工作目录 247 12.10.1 Windows 248 12.10.2 macOS 248 12.10.3 Ubuntu Linux 249 12.11 小程序 12:剪贴板记录程序 249 12.11.1 Windows 251 12.11.2 macOS 252 12.11.3 Ubuntu Linux 252 12.12 使用 PyInstaller 编译 Python 程序 253 12.13 小结 254 第 13 章 Web 内容爬取 255 13.1 HTTP 和 HTTPS 255 13.2 项目 6:使用 webbrowser 模块运行程序 256 13.2.1 第 1 步:确定 URL 256 13.2.2 第 2 步:处理命令行参数 257 13.2.3 第 3 步:获取剪贴板中的内容 258 13.2.4 使用 webbrowser 模块编写类似程序 259 13.3 使用 requests 模块下载网络文件 259 13.3.1 下载网页 259 13.3.2 检查错误 260 13.3.3 将下载的文件保存到硬盘 261 13.4 访问天气 API 262 13.4.1 城市搜索 264 13.4.2 获取当前天气 265 13.4.3 获取天气预报 265 13.4.4 探索 API 265 13.5 理解 HTML 266 13.5.1 探索 HTML 格式 266 13.5.2 查看网页的源代码 266 13.5.3 打开浏览器的开发者工具 267 13.5.4 查找 HTML 元素 268 13.6 使用 Beautiful Soup 解析 HTML 270 13.6.1 创建 Beautiful Soup 对象 271 13.6.2 查找元素 271 13.6.3 获取元素属性中的数据 273 13.7 项目 7:打开所有搜索结果 274 13.7.1 第 1 步:获取搜索结果页面 274 13.7.2 第 2 步:查找所有搜索结果 275 13.7.3 第 3 步:在不同的浏览器选项卡中打开每个搜索结果 275 13.7.4 使用同样的技巧编写类似程序 276 13.8 项目 8:下载 XKCD 漫画 276 13.8.1 第 1 步:设计程序 277 13.8.2 第 2 步:下载网页 278 13.8.3 第 3 步:找到并下载漫画图像 279 13.8.4 第 4 步:保存图像并找到上一张漫画 280 13.8.5 用同样的技巧编写类似程序 281 13.9 使用 Selenium 控制浏览器 282 13.9.1 启动 Selenium 控制的浏览器 282 13.9.2 单击浏览器中的按钮 283 13.9.3 查找页面上的元素 283 13.9.4 单击页面上的元素 285 13.9.5 填写并提交表单 285 13.9.6 发送特殊键 286 13.10 使用 Playwright 控制浏览器 287 13.10.1 启动 Playwright 控制的浏览器 287 13.10.2 单击浏览器中的按钮 288 13.10.3 查找页面上的元素 288 13.10.4 单击页面上的元素 290 13.10.5 填写并提交表单 292 13.10.6 发送特殊键 292 13.11 小结 293 第 14 章 Excel 电子表格 295 14.1 读取 Excel 文件 296 14.1.1 打开工作簿 297 14.1.2 获取工作簿中的工作表 297 14.1.3 获取工作表中的单元格 297 14.1.4 在列的字母编号和数字编号之间进行转换 299 14.1.5 获取行和列 300 14.2 项目 9:收集人口普查统计数据 302 14.2.1 第 1 步:读取电子表格数据 302 14.2.2 第 2 步:填充数据结构 303 14.2.3 第 3 步:将结果写入文件 305 14.2.4 使用同样的技巧编写类似程序 305 14.3 写入 Excel 文档 306 14.3.1 创建并保存 Excel 文件 306 14.3.2 创建和删除工作表 307 14.3.3 在单元格中写入值 307 14.4 项目 10:更新电子表格 308 14.4.1 第 1 步:设计用于存储正确价格信息的数据结构 309 14.4.2 第 2 步:检查所有行并更正错误价格 310 14.4.3 使用同样的技巧编写类似程序 310 14.5 设置单元格的字体样式 310 14.6 公式 312 14.7 调整行和列 314 14.7.1 设置行高和列宽 314 14.7.2 合并和拆分单元格 315 14.7.3 冻结窗格 316 14.8 图表 317 14.9 小结 318 第 15 章 Google Sheets 319 15.1 准备工作 319 15.1.1 新建一个 Google Cloud 项目 320 15.1.2 启用 Google Sheets API 和 Google Drive API 320 15.1.3 配置 OAuth 许可界面 320 15.1.4 创建凭证 321 15.1.5 使用凭证文件登录 321 15.1.6 撤销凭证文件 322 15.2 Spreadsheet 对象 322 15.2.1 创建、上传和列出电子表格 323 15.2.2 访问电子表格的属性 324 15.2.3 下载和上传电子表格 325 15.2.4 删除电子表格 326 15.3 Sheet 对象 326 15.3.1 读写数据 327 15.3.2 创建、移动和删除工作表 332 15.3.3 复制工作表 333 15.4 Google Forms 334 15.5 项目 11:虚构的区块链加密货币骗局 334 15.5.1 第 1 步:审计区块链 335 15.5.2 第 2 步:实施交易 337 15.6 Google Sheets 配额 338 15.7 小结 338 第 16 章 SQLite 数据库 341 16.1 比较电子表格和数据库 341 16.2 比较 SQLite 和其他 SQL 数据库 344 16.3 创建数据库和表 344 16.3.1 连接到数据库 345 16.3.2 创建表 346 16.3.3 定义数据类型 346 16.3.4 列出表和列 347 16.4 数据库操作 CRUD 348 16.4.1 在数据库中插入数据 349 16.4.2 从数据库中读取数据 350 16.4.3 更新数据库中的数据 356 16.4.4 删除数据库中的数据 357 16.5 回滚事务 357 16.6 备份数据库 358 16.7 修改和删除表 359 16.8 使用外键连接多个表 360 16.9 内存数据库及其备份 362 16.10 复制数据库 363 16.11 SQLite 命令行工具 364 16.12 小结 365
第 17 章 PDF 文档和 Word文档 367 17.1 PDF 文档 367 17.1.1 提取文本 367 17.1.2 使用 AI 做后期处理 369 17.1.3 提取图像 370 17.1.4 使用既有 PDF 页面创建 PDF 文档 371 17.2 项目 12:将众多 PDF 文档中的部分页面合并为单个 PDF 文档 377 17.2.1 第 1 步:找出所有的 PDF 文件 378 17.2.2 第 2 步:打开每个 PDF 文件 379 17.2.3 第 3 步:保存结果 379 17.2.4 使用同样的技巧编写类似程序 380 17.3 Word 文档 380 17.3.1 读取 Word 文档 381 17.3.2 获取 .docx 文件中的所有文本 381 17.3.3 设置 Paragraph 和 Run 对象的样式 382 17.3.4 设置 Run 对象的属性 383 17.3.5 写入 Word 文档 385 17.3.6 添加标题 387 17.3.7 添加软换行符和换页符 388 17.3.8 添加图片 389 17.4 小结 389 第 18 章 CSV、JSON 和 XML文件 391 18.1 CSV 格式 391 18.1.1 读取 CSV 文件 392 18.1.2 使用 for 循环访问数据 393 18.1.3 写入 CSV 文件 394 18.1.4 将制表符(而不是逗号)用作分隔符 395 18.1.5 处理标题行 396 18.2 项目 13:删除 CSV 文件中的标题行 398 18.2.1 第 1 步:遍历每个文件 398 18.2.2 第 2 步:读取文件 399 18.2.3 第 3 步:写入新的 CSV 文件 400 18.2.4 使用同样的技巧编写类似程序 401 18.3 用途广泛的纯文本格式 401 18.3.1 JSON 402 18.3.2 XML 405 18.4 小结 411 第 19 章 记录时间、调度任务和启动程序 413 19.1 time 模块 413 19.1.1 返回 UNIX 纪元时间戳 413 19.1.2 让程序暂停 415 19.2 项目 14:超级秒表 415 19.2.1 第 1 步:为计时做准备 416 19.2.2 第 2 步:记录并显示每个阶段的时长 416 19.2.3 使用同样的技巧编写类似程序 417 19.3 datetime 模块 417 19.3.1 表示时间段 419 19.3.2 暂停到特定日期 420 19.3.3 将 datetime 对象转换为字符串 421 19.3.4 将字符串转换为 datetime 对象 422 19.4 在 Python 程序中启动其他程序 423 19.4.1 向进程传递命令行参数 426 19.4.2 接收来自外部命令的文本输出 426 19.4.3 运行任务调度器、launchd 和 cron 427 19.4.4 使用默认应用程序打开文件 427 19.5 项目 15:简单的倒计时程序 428 19.5.1 第 1 步:倒计时 428 19.5.2 第 2 步:播放音频文件 428 19.5.3 使用同样的技巧编写类似程序 429 19.6 小结 429 第 20 章 发送电子邮件、短信和通知 431 20.1 Gmail API 431 20.1.1 启用 Gmail API 432 20.1.2 发送邮件 432 20.1.3 读取邮件 433 20.1.4 搜索邮件 434 20.1.5 下载附件 435 20.2 SMS Email 网关 435 20.3 通知 437 20.3.1 发送通知 437 20.3.2 传输元数据 438 20.3.3 接收通知 438 20.4 小结 440 第 21 章 绘制图形和操作图像 441 21.1 计算机图像基础 441 21.1.1 颜色和 RGBA 值 441 21.1.2 坐标和矩形元组 443 21.2 使用 Pillow 操作图像 444 21.2.1 使用数据类型 Image 445 21.2.2 裁剪图像 446 21.2.3 将图像粘贴到其他图像中 447 21.2.4 调整图像大小 450 21.2.5 旋转和翻转图像 451 21.2.6 修改像素 453 21.3 项目 16:添加徽标 454 21.3.1 第 1 步:载入徽标图像 455 21.3.2 第 2 步:遍历所有的文件 456 21.3.3 第 3 步:调整图像大小 456 21.3.4 第 4 步:添加徽标并保存所做的修改 457 21.3.5 使用同样的技巧编写类似程序 459 21.4 在图像上绘画 459 21.4.1 形状 459 21.4.2 文本 461 21.5 使用剪贴板复制并粘贴图像 462 21.6 使用 Matplotlib 绘图 463 21.6.1 折线图和散点图 463 21.6.2 条形图和饼图 465 21.6.3 其他图表元素 467 21.7 小结 469 第 22 章 识别图像中的文本 471 22.1 安装 Tesseract 和 PyTesseract 471 22.1.1 Windows 471 22.1.2 macOS 472 22.1.3 Linux 472 22.1.4 安装 PyTesseract 472 22.2 OCR 基础知识 472 22.2.1 预处理图像 473 22.2.2 使用大语言模型更正错误 474 22.3 识别非英语文本 476 22.4 扫描器应用程序 NAPS2 477 22.4.1 安装并设置 NAPS2 477 22.4.2 在 Python 程序中运行 NAPS2 477 22.4.3 指定输入 478 22.5 小结 479 第 23 章 控制键盘和鼠标 481 23.1 在 macOS 系统中将程序设置为无障碍的 482 23.2 从故障中恢复 482 23.2.1 暂停和故障恢复措施 482 23.2.2 注销 482 23.3 控制鼠标移动 482 23.3.1 移动鼠标 484 23.3.2 获取鼠标的当前位置 484 23.4 控制鼠标交互 485 23.4.1 单击 485 23.4.2 拖曳 485 23.4.3 滚动 487 23.5 规划鼠标移动 488 23.6 截屏 489 23.7 图像识别 490 23.8 获取窗口信息 492 23.8.1 获取活动窗口 492 23.8.2 使用其他函数查找窗口 493 23.8.3 操作窗口 493 23.9 控制键盘 496 23.9.1 模拟按键操作 496 23.9.2 指定键名 497 23.9.3 按下和松开键盘键 498 23.9.4 模拟按快捷键 498 23.10 GUI 自动化脚本编写小贴士 499 23.11 显示消息框 500 23.12 小结 501 第 24 章 文本转语音引擎和语音识别引擎 503 24.1 文本转语音引擎 503 24.1.1 生成语音 504 24.1.2 将语音保存为 WAV 文件 505 24.2 语音识别 506 24.3 创建字幕文件 507 24.4 从网站下载视频 508 24.5 小结 511 附录 安装第三方包 513 1. 安装 pip 513 2. 查找 pip 513 3. 在虚拟环境中运行 pip 514 4. 安装本书用到的包 514
《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 《Python编程实战 妙趣横生的项目之旅》 第 1章 虚假姓名生成器 1 1.1 项目1:生成假名 1 1.1.1 项目规划与设计 1 1.1.2 策略 2 1.1.3 伪代码 2 1.1.4 代码 3 1.2 本章小结 11 1.3 延伸阅读 12 1.3.1 伪代码编写标准 12 1.3.2 编程规范 12 1.3.3 第三方模块 12 1.4 实践项目 12 1.4.1 儿童黑话 13 1.4.2 简单条形图 13 1.5 挑战项目 13 1.5.1 拉丁文简单条形图 14 1.5.2 中间名 14 1.5.3 挑战不同的项目 14 第 2章 寻找回文 15 2.1 寻找和加载字典文件 15 2.1.1 处理文件打开异常 16 2.1.2 加载字典文件 16 2.2 项目2:寻找回文单词 18 2.2.1 策略和伪代码 18 2.2.2 寻找回文单词的代码 19 2.3 项目3:寻找回文短语 20 2.3.1 策略和伪代码 20 2.3.2 寻找回文短语的代码 22 2.3.3 程序性能分析 24 2.4 本章小结 27 2.5 延伸阅读 27 2.6 实践项目:字典清理 27 2.7 挑战项目:用递归方法查找回文 27 第3章 寻找易位词 28 3.1 项目4:寻找单词的易位词 28 3.1.1 策略和伪代码 28 3.1.2 寻找易位词的代码 30 3.2 项目5:寻找易位短语 31 3.2.1 策略和伪代码 32 3.2.2 寻找易位短语的代码 35 3.3 项目6:寻找伏地魔(Voldemort)——高卢人策略 41 3.4 项目7:寻找伏地魔(Voldemort)——英式蛮力方式 43 3.4.1 策略 43 3.4.2 英式蛮力方式的代码 45 3.5 本章小结 52 3.6 延伸阅读 52 3.7 实践项目:寻找二元字母组 52 3.8 挑战项目:易位词自动生成器 52 第4章 破解美国内战密码 53 4.1 项目8:路由密码 53 4.1.1 策略 55 4.1.2 伪代码 57 4.1.3 解密路由密码的代码 58 4.1.4 破解路由密码 60 4.1.5 增加用户接口 62 4.2 项目9:栅栏密码 67 4.2.1 策略 68 4.2.2 使用栅栏密码加密代码 69 4.2.3 使用栅栏密码解密代码 71 4.3 本章小结 73 4.4 延伸阅读 73 4.5 实践项目 74 4.5.1 黑客林肯 74 4.5.2 判断密码类型 74 4.5.3 以字典的形式存储密钥 74 4.5.4 自动生成可能的密钥 75 4.5.5 路由换位密码:暴力破解 75 4.6 挑战项目 76 4.6.1 路由密码编码器 76 4.6.2 三栏式栅栏密码 77 第5章 编写英国内战密码 78 5.1 项目10:Trevanion密码 78 5.1.1 策略和伪代码 80 5.1.2 Trevanion密码的代码 81 5.2 项目11:编写空密码 84 5.2.1 清单型空密码的代码 85 5.2.2 清单型空密码程序的输出 86 5.3 本章小结 87 5.4 延伸阅读 87 5.5 实践项目 87 5.5.1 营救玛丽 87 5.5.2 科尔切斯特脱险 88 第6章 隐写术 89 6.1 项目12:隐藏维吉尼亚密码 89 6.1.1 程序运行平台 90 6.1.2 策略 91 6.1.3 伪代码 96 6.1.4 代码 97 6.1.5 添加维吉尼亚密码 100 6.1.6 检测隐藏消息 101 6.2 本章小结 104 6.3 延伸阅读 104 6.4 实践项目:检查空行数 105 6.5 挑战项目:使用Monospace字体 105 第7章 用遗传算法培育大鼠 106 7.1 在所有解中寻找最优解 106 7.2 项目13:培育超级老鼠大军 107 7.2.1 策略 107 7.2.2 培育超级大鼠的代码 110 7.2.3 项目小结 115 7.3 项目14:破解高科技保险柜 117 7.3.1 策略 118 7.3.2 保险柜破解器的代码 119 7.4 本章小结 122 7.5 延伸阅读 122 7.6 挑战项目 122 7.6.1 为老鼠建立“后宫” 123 7.6.2 创建更高效的破解器 123 第8章 统计俳句音节数 124 8.1 日本俳句 124 8.2 项目15:统计音节数 125 8.2.1 策略 126 8.2.2 管理缺失单词 128 8.2.3 音节计数程序代码 134 8.2.4 编写检查音节计数程序的程序 136 8.3 本章小结 137 8.4 延伸阅读 137 8.5 实践项目:音节计数器对比字典文件计数器 137 第9章 用马尔可夫链分析技术编写俳句 139 9.1 项目16:马尔可夫链分析 139 9.1.1 策略 141 9.1.2 伪代码 144 9.1.3 训练语料库 145 9.1.4 程序调试 146 9.1.5 程序代码 147 9.1.6 输出结果 156 9.2 本章小结 159 9.3 延伸阅读 159 9.4 挑战项目 160 9.4.1 新词生成器 160 9.4.2 图灵测试 160 9.4.3 俳句判断 161 9.4.4 马尔可夫音乐 161 第 10章 我们孤独吗——探索费米悖论 162 10.1 项目17:模拟银河系 162 10.1.1 策略 163 10.1.2 估算文明的数量 163 10.1.3 选择无线电气泡大小 164 10.1.4 得出探测概率计算公式 165 10.1.5 计算探测概率的代码 167 10.1.6 建立图形模型 171 10.1.7 结果分析 182 10.2 本章小结 183 10.3 延伸阅读 183 10.4 实践项目 184 10.4.1 遥远的银河 184 10.4.2 建立银河系帝国 184 10.4.3 预测可探测性的迂回方法 186 10.5 挑战项目 186 10.5.1 创造条状螺旋银河系 186 10.5.2 为你的星系添加可居住区 186 第 11章 蒙蒂·霍尔问题 188 11.1 蒙特卡罗模拟 188 11.2 项目18:验证萨凡特说法的正确性 190 11.2.1 策略 190 11.2.2 验证萨凡特说法的代码 191 11.3 项目19:蒙蒂霍尔游戏 193 11.3.1 面向对象程序设计简介 193 11.3.2 策略和伪代码 196 11.3.3 蒙蒂霍尔游戏代码 197 11.4 本章小结 207 11.5 延伸阅读 207 11.6 实践项目:生日悖论 207 第 12章 储蓄安全 208 12.1 项目20:模拟退休生活 208 12.1.1 策略 209 12.1.2 伪代码 215 12.1.3 获取历史收益数据 216 12.1.4 程序代码 217 12.2 本章小结 229 12.3 延伸阅读 229 12.4 挑战项目 229 12.4.1 一图值千金 229 12.4.2 组合投资 230 12.4.3 我的运气 230 12.4.4 财富值排序 230 第 13章 模拟外星火山 231 13.1 项目21:艾奥之羽 231 13.1.1 认识pygame 232 13.1.2 策略 233 13.1.3 代码 235 13.1.4 运行模拟程序 244 13.2 本章小结 245 13.3 延伸阅读 245 13.4 实践项目:抛射 245 13.5 挑战项目 246 13.5.1 羽流冠 246 13.5.2 “泉源”——粒子运动轨迹 246 13.5.3 弹丸 247 第 14章 用探测器绘制火星地图 248 14.1 与游戏有关的航天及动力学知识 248 14.1.1 万有引力定律 248 14.1.2 开普勒行星运动定律 249 14.1.3 轨道力学 250 14.1.4 向后飞行 250 14.1.5 提升和降低轨道高度 250 14.1.6 走内线 251 14.1.7 圆化椭圆形轨道 251 14.1.8 用霍曼转移提升和降低轨道 252 14.1.9 利用单次切向点火提升和降低轨道高度 253 14.1.10 利用螺旋转移实现轨道高度螺旋式改变 254 14.1.11 实现同步轨道 254 14.2 项目22:火星轨道飞行器游戏 254 14.2.1 策略 255 14.2.2 游戏资源 257 14.2.3 程序代码 258 14.3 本章小结 279 14.4 挑战项目 279 14.4.1 设置游戏启动画面 279 14.4.2 智能仪表 280 14.4.3 无线电黑障 280 14.4.4 游戏评分 280 14.4.5 策略指南 280 14.4.6 大气制动 281 14.4.7 入侵警报 282 14.4.8 越过极地 282 第 15章 用行星叠加技术完善天体摄影图片 283 15.1 项目23:叠加木星照片 283 15.1.1 认识pillow模块 284 15.1.2 操作文件和目录 285 15.1.3 从视频获取图片 287 15.1.4 策略 288 15.1.5 代码 288 15.2 本章小结 299 15.3 延伸阅读 299 15.4 挑战项目:消失之法 299 附录 实践项目解决方案 302 第 1章 虚假姓名生成器 302 第 2章 寻找回文 303 第3章 寻找易位词 303 第4章 破解美国内战密码 304 第5章 编写英国内战密码 308 第6章 隐写术 310 第8章 统计俳句音节数 311 第 10章 我们孤独吗——探索费米悖论 312 第 11章 蒙蒂·霍尔问题 316 第 13章 模拟外星火山 317
|
|