Statistics
4
Views
0
Downloads
0
Donations
Python编程快速上手2 趣味小项目轻松学 ([美]阿尔·斯维加特(Al Sweigart)) (Z-Library)
技术Author:[美]阿尔·斯维加特(Al Sweigart)
本书旨在以“最短小精悍的代码+最丰富的创造力”的方式向读者展示81个简单、有趣的实践项目。如果你已经掌握了基本的Python语法,并且准备开始编写程序,那么阅读本书会让你觉得既有趣又很受启发。本书给出的81个Python项目,可以助你快速上手Python编程完成数字艺术、游戏、动画、计数程序等方面的任务。一旦了解了代码是如何工作的,你就可以动手重新编写程序,并通过添加自定义的内容来不断实践。需要说明的是,书中这些项目涉及的程序大多是用少于256行的代码实现的,如蜗牛赛跑、诱饵标题生成器、DNA可视化,而且每个项目都被设计成独立的Python源文件,可供读者轻松地在网上分享。本书适合所有想通过Python学习编程的读者使用,尤其适合有Python基础、需要快速实现编程的读者。
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.
Page
1
基于Python 3.x 这是一本通过81个趣味小项目带你快速上手Python编程的书。如果你厌倦了循规蹈矩的教程, 不妨尝试一下本书作者提倡的“做中学”方法,相信你会发现小项目程序对学习编程大有裨益。 这些项目涉及游戏、动画、数学、模拟、科学等类型,力求以最短小精悍的代码展现最丰富的创 造力,以期带给读者趣味性和启发性。在了解程序的工作原理之后,你可以尝试重新创建程序,并按 照书中“探索程序”部分给出的建议或自己的想法对程序加以修改。 值得一提的是,书中的大部分项目是用少于256行的代码实现的。无论是古老的数独游戏、元素 周期表,还是科技感十足的诱饵标题生成器、DNA可视化,所有小项目都被设计成了独立的 Python 源文件,便于读者分享。 本书适合所有想通过 Python 学习编程的读者使用,尤其适合有 Python 基础、需要快速实现编 程的读者。 本书主要经典小项目 ● “绞刑架”与“断头台” ● 旋转立方体 ● 21点纸牌游戏 ● 虚拟水族箱 ● 弹跳 DVD 标志 ● 乌尔皇室游戏 ● ROT13密码 ● “海绵宝宝的嘲弄” 作者简介 阿尔·斯维加特(Al Sweigart)是软件开发人员、知名作者和 Python 软件基金会的研究员。 他曾在美国加利福尼亚州奥克兰电子游戏博物馆、艺术和数字娱乐博物馆担任教育主管。他是畅销书 《Python编程快速上手—让繁琐工作自动化》的作者。 81个适合编码新手 的趣味小项目 P y th o n 编 程 快 速 上 手 2 趣 味 小 项 目 轻 松 学 趣味小项目轻松学 THE BIG BOOK OF SMALL PYTHON PROJECTS 【美】 阿尔·斯维加特(Al Sweigart)◎著 荣耀 张嘉豪◎译 Python编程快速上手 2 分类建议:计算机/软件开发/Python 人民邮电出版社网址:www.ptpress.com.cn 59350-Python编程快速上手2.indd 1,3 2022/8/16 10:46:48
Page
2
趣味小项目轻松学 THE BIG BOOK OF SMALL PYTHON PROJECTS 【美】 阿尔·斯维加特(Al Sweigart)◎著 荣耀 张嘉豪◎译 Python编程快速上手 2 59350-Python编程快速上手2.indd 4 2022/8/16 10:46:48
Page
3
版权声明 Copyright © 2021 by Al Sweigart. Title of English-language original: The Big Book of Small Python Projects: 81 Easy Practice Programs, ISBN 9781718501249, published by No Starch Press Inc. 245 8th Street, San Francisco, California United States 94103. The Simplified Chinese-edition Copyright ©2022 by Posts and Telecom Press Co., Ltd under license by No Starch Press Inc. All rights reserved. 本书简体中文字版由美国 No Starch 出版社授权人民邮电出版社有限公司出版。未经出版者书面许可,不得 复制或抄袭本书任何部分的内容。 版权所有,侵权必究。 ♦ 著 [美]阿尔·斯维加特(Al Sweigart) 译 荣 耀 张嘉豪 责任编辑 吴晋瑜 责任印制 王 郁 焦志炜 ♦ 人民邮电出版社出版发行 北京市丰台区成寿寺路 11 号 邮编 100164 电子邮件 315@ptpress.com.cn 网址 https://www.ptpress.com.cn 大厂回族自治县聚鑫印刷有限责任公司印刷 ♦ 开本:800×1000 1/16 印张:21 2022 年 9 月第 1 版 字数:493 千字 2022 年 9 月河北第 1 次印刷 著作权合同登记号 图字:01-2021-4698 号 定价:99.80 元 读者服务热线:(010)81055410 印装质量热线:(010)81055316 反盗版热线:(010)81055315 广告经营许可证:京东市监广登字 20170147 号
Page
4
内容提要 本书旨在以“最短小精悍的代码+最丰富的创造力”的方式向读者展示 81 个简 单、有趣的实践项目。如果你已经掌握了基本的 Python 语法,并且准备开始编写程 序,那么阅读本书会让你觉得既有趣又很受启发。 本书给出的 81 个 Python 项目,可以助你快速上手 Python 编程完成数字艺术、 游戏、动画、计数程序等方面的任务。一旦了解了代码是如何工作的,你就可以动 手重新编写程序,并通过添加自定义的内容来不断实践。需要说明的是,书中这些 项目涉及的程序大多是用少于 256 行的代码实现的,如蜗牛赛跑、诱饵标题生成器、 DNA 可视化,而且每个项目都被设计成独立的 Python 源文件,可供读者轻松地在 网上分享。 本书适合所有想通过 Python 学习编程的读者使用,尤其适合有 Python 基础、 需要快速实现编程的读者。
Page
5
作者简介 阿尔·斯维加特(Al Sweigart)是软件开发人员、知名作者和 Python 软件基金 会的研究员。他曾在美国加利福尼亚州奥克兰电子游戏博物馆、艺术和数字娱乐博 物馆担任教育主管。他撰写了多本编程图书,如畅销书《Python 编程快速上手— 让繁琐工作自动化》《Python 游戏编程快速上手》等。 技术审稿人简介 Sarah Kuchinsky 女士是一名企业培训师和顾问。她用 Python 开发各种应用, 包括卫生系统建模、游戏开发以及任务自动化。Sarah 是 North Bay Python 会议的联 合创始人、PyCon 开发者大会的主题演讲的负责人以及 PyLadies Silicon Valley 的主 要组织者。她拥有管理科学与工程和数学双学位。
Page
6
译者序 Python 是一门独特的编程语言,对于初学者和它的爱好者来说,它多少带有些玩乐的色 彩—学习门槛低,容易上手,几十行代码就能实现了不起的效果。但是,当用于专业软件开 发和数据分析、机器学习建模时,Python 又立刻展现出作为专业编程语言严肃的一面—语法 简洁富有表达力,开发效率高,运行性能好。Python 具有较好的跨平台性,其生态中不乏丰富 的开源工具。 不少写给初学者的编程指导书都是以枯燥乏味的小程序片段讲述编程的原理和概念,往 往难以激发初学者学习编程的兴趣(兴趣是最好的老师)。这本书跟作者写的其他几本畅销书 类似,均为项目导向式风格。每个小项目自成一章,先交代项目背景,接着给出程序的执行 效果,然后讲解其工作原理,中间穿插一些语言语法或模块用法的解释,最后展示完整的项 目代码,并提供一些思考和练习题。显然,这并不是一本系统讲解 Python 语言特性的入门书, 不过如果你已经有一些语言基础,但在编写程序时不知从何下手,这本书就是很好的启发式 读物了。 编程是一种创造性的活动,可以锻炼人的逻辑思维能力,而 Python 能让初学者和爱好者更 容易发挥自己的创造性。无论对于有志于从事软件开发的学生,还是对于其他非职业程序员但 又需要进行编程的人员(比如从事数据分析、AI 模型训练的专业人员),Python 都是当前进入 编程世界的最佳起点。纵观编程语言发展史,Python 可以算是一门“古老”的编程语言了,对 于熟悉它的程序员来说,Python 在大数据和人工智能时代的大放异彩让人始料未及。不过凡事 有因有果。Python 没有想把自己发展成为无所不能的语言,对新语言特性的加入保持克制,始 终保持语言核心特性简洁,能通过库完成的全都交给库(这些库通常使用高性能 C 或 C++编写)。 在更大的场景看,Python 恰如其分地发挥了“黏合剂”的作用。 阿尔•斯维加特(Al Sweigart)曾是一位软件工程师,现在全职从事 Python 编程布道,他 聪明、有才华,在写书方面很有经验,且深谙畅销书的写作“套路”。本书中的代码写得很漂亮, 充分展现了 Python 语言简洁、强大的特点,也初步展示了对一些数据结构和算法简单、精巧的 使用。他崇尚开源(也乐于接受捐赠),开发了多个 Python 开源模块,并将自己的全部著作慷 慨分享在个人官网上供读者免费阅读,帮助了很多 Python 初学者和爱好者。 本书由我和张嘉豪翻译,嘉豪做事认真踏实,富有责任心和进取心。感谢洪伊晓晨、余志 昊以及晏金陈在翻译后期奉献的辅助工作。感谢浣石公司的朱艳女士在翻译过程中提供的协助。
Page
7
2 译者序 你们的奉献得以让本书以更佳的面貌呈现在读者面前。 请开始学习 Python 编程吧,体验编程的乐趣,自由展示你的才华和创意。祝编程之旅 愉快! 荣耀 博士 于南京大行宫
Page
8
前 言 如果只是跟随 print('Hello, world!')这样的教程学习,你会觉得编程异常 简单。你可能看过一些面向初学者的优秀图书或者相关的在线课程,也做 过一些练习,而且已对大部分技术术语烂熟于心。然而,你很可能会发现, 一旦离开“安乐窝”去编写自己的程序,就会寸步难行。面对空白的编辑 器窗口,你可能会茫然、发呆,对如何动手编写 Python 程序一筹莫展。 问题的关键在于,遵循“教程非常适合学习”的主旨,与“学习从 头开始编写原创程序”是两码事。通常,对于此阶段的建议是学习开源 软件的源代码,或者创建你自己的项目。但有些开源项目并未提供良好的文档,也不见得特别 适合新手学习。虽然开源项目会激励你创建自己的项目,但你不能从中得到系统的指导。 本书为你提供如何应用编程概念的实践示例,其中包含 80 多个游戏、模拟和艺术等方面的程 序。重要的是,它们并非代码片段,而是完整的、可运行的 Python 程序。你可以复制并运行这些代 码,以理解其工作方式,也可以尝试自己进行更改。作为练习,你还可以按照自己的意愿重新编写 这些代码。一段时间后,你会逐渐获得自己的编程灵感,更重要的是,你将知道如何着手创建程序。 如何设计小程序 编程已被证明是一项强大的技能,它“创造”了价值数十亿美元的科技公司和惊人的技术 进步。我们创建自己的软件时很容易好高骛远,“贪多嚼不烂”的后果只能是程序烂尾,而开发 者也会倍感沮丧。其实,你无须成为计算机天才也能编写有趣且富有创意的程序。 本书中的 Python 程序遵循以下几个设计原则,有助于编程新手理解源代码。 小型:本书中大多数项目的程序不超过 256 行代码,这样做是为了让读者更容易理解。 选择 256 这个行数限制没什么特别的含义,不过是因为 256 是 2 的 8 次方,而 2 的幂通 常被认为是程序员的幸运数字。 基于文本:文字比图形简单。源代码和程序输出都是文本,这样便于你搞清楚代码中的 print('Thanks for playing!')和屏幕上输出的 Thanks for playing!之间的关系。 免安装:每个程序都保存为单独的 Python 源文件,其扩展名为.py,如 tictactoe.py,你 不需要额外运行安装程序。 丰富:本书共有 81 个程序,包括棋盘类、卡牌类、艺术类、模拟类、谜题类、迷宫类 和诙谐类程序等。
Page
9
2 前 言 简单:这些程序的编写方式易于初学者理解。每当不得不在使用复杂的高性能算法编写 代码和编写简单、直接的代码之间做出选择时,我总是选择后者。 基于文本的程序可能看起来很老套,但采用这种编程风格可以避开下载图形、安装附加库 以及管理项目文件夹等带来的干扰和陷阱,只需关注代码本身。 读者对象 本书是为两类读者写的。第一类是已经学习了 Python 和基础编程知识但仍然不知道如何自 己编写程序的人。他们可能会觉得自己不适合编程。他们也许能够完成教程中的练习,但仍然 难以想象一个完整的程序是什么样子的。通过先“照抄”然后重新创建本书中的游戏,他们就 能明白自己所学的编程概念是如何构成各种真实程序的。 第二类是虽然刚接触编程但兴趣浓厚并勇于探索的人。他们通常希望能立即着手编写游戏、 模拟和数字运算类的程序。这类读者会在实践过程中快速成长,或者他们已经会用其他语言编 程,只是不熟悉 Python 而已。虽然本书不能替代完整的 Python 入门课程,但涵盖了对 Python 基础知识的简要介绍,以及如何在程序运行时使用调试器检查程序的内部运作机制。 有经验的程序员也可能喜欢本书中介绍的程序,不过请别忘了,本书是为初学者写的。 关于本书 本书的大部分内容专注于特色程序,同时提供了包括通用编程和 Python 知识在内的额外学 习资源。本书包括如下内容。 项目:共有 81 个项目。每个项目独立介绍,包括项目名称、描述、程序运行输出示例 以及程序源代码。某些项目还提供了一些对代码进行实验性修改以定制程序的建议。 附录 A:标签索引,列出按项目标签分类的所有项目。 附录 B:字符映射表,列出程序可以输出的符号(例如心形、线条、箭头和方块)的字 符代码。 如何学习书中的程序 本书不像传统教程那样教授 Python 或编程概念,而是提供一种“做中学”的方法,鼓励你 亲自动手输入程序,运行程序(像玩游戏一样),并在调试器中了解其内部工作原理。 本书的重点不在于详细解释编程语言的语法,而是展示执行实际可靠的程序示例,无论是 纸牌游戏、动画,还是数学谜题的探索,均是如此。因此,我建议遵循以下步骤来学习。 1.下载程序并运行,查看程序的效果。 2.从一个空白文件开始,自己手动输入(不要复制和粘贴!)本书中的游戏代码。 3.再次运行程序,然后返回并修改你可能引入的任何拼写错误或弥补缺陷。 4.在调试器下运行程序,以便仔细地逐行运行代码,从而理解其作用。 5.找到标有!的注释,查看你可以修改的代码,然后在下次运行程序时观察自己的修改对 程序有何影响。
Page
10
前 言 3 6.尝试自己从头开始创建程序。不必完全复制程序代码,你可以在程序中融入自己的想法。 复制本书中的代码时,不必输入注释(#符号后面的文本),因为这些是给程序员看的, Python 会忽略这些注释。不过,请尽量保持你的程序代码与本书中的程序代码行号相同,以便 更容易进行对比。 本书中的每个程序都有一组描述标签,例如“棋盘类”“模拟类”“艺术类”“双人游戏类” 等。对这些标签的解释以及标签和项目之间的交叉索引参见附录 A。不过,项目是按原书英文 字母顺序列出的。 下载并安装 Python Python 既是编程语言的名称,也是运行 Python 代码的解释器软件的名称。Python 软件可以 免费下载和使用。你可以通过终端或命令提示符窗口检查是否已经安装了 Python。在 Windows 上,打开命令提示符窗口,然后运行 py --version。如果看到如下输出,则说明 Python 已安装: C:\Users\Al>py --version Python 3.9.1 在 macOS 和 Linux 上,打开终端程序,然后运行 python3 --version。如果看到如下输出, 则说明 Python 已安装: $ python3 --version Python 3.9.1 本书使用 Python 3。Python 2 和 Python 3 不完全兼容,本书中的程序至少需要 Python 3.1.1 (2009 年发布)才能运行。 下载并安装 Mu Editor 在使用 Python 软件运行程序之前,你需要在文本编辑器或集成开发环境(IDE)应用程序 中输入 Python 代码。如果你是初学者,建议使用 Mu Editor(简称 Mu)作为 IDE,它简单易用, 也没有那么多“让人困扰”的高级选项。 请下载适合你的操作系统的安装程序,然后双击安装文件运行它。如果你使用的是 macOS, 运行安装程序会打开一个窗口,必须在其中将 Mu 图标拖到 Applications 文件夹图标上才能继续 安装。如果你使用的是 Ubuntu,则需要将 Mu 作为 Python 包安装。在这种情况下,打开一个新 的终端窗口并运行 pip3 install mu-editor 进行安装,然后使用 mu-editor 命令运行它。单击下载 页面的 Python 包部分的 Instructions 按钮,可以获取翔实的说明信息。 运行 Mu Editor 安装完成后,可以按照如下步骤运行 Mu。 在 Windows 7 或更高版本上,单击屏幕左下角的开始图标,在搜索框中输入 mu,并在 输出的结果中选择 Mu。 在 macOS 上,打开 Finder 窗口,单击应用程序,然后单击 mu-editor。
Page
11
4 前 言 在 Ubuntu 上,按 Ctrl-Alt-T 打开终端窗口,然后运行 python3 -m mu。 Mu 首次运行时,会出现一个选择模式窗口,其中包含以下选项:Adafruit CircuitPython、 BBC micro:bit、Pygame Zero 和 Python 3。在本书中,我们选择 Python 3,当然,也可以随时通 过单击编辑器窗口顶部的模式按钮更改模式。 现在我们可以在 Mu 的主窗口中输入代码,然后通过顶部的按钮保存、打开和运行程序文件。 运行 IDLE 和其他编辑器 我们可以任选编辑器编写 Python 代码。集成开发和学习环境(IDLE)软件与 Python 一起 安装,如果由于某种原因无法安装或运行 Mu,它可以作为备用编辑器。IDLE 的用法如下。 在 Windows 7 或更高版本上,单击屏幕左下角的开始图标,在搜索框中输入 idle,然后 选择 IDLE (Python GUI)。 在 macOS 上,打开 Finder 窗口,单击应用程序→Python 3.9→IDLE。 在 Ubuntu 上,选择 Applications→Accessories→Terminal,然后输入 idle3。也可以单击 屏幕顶部的应用程序,选择 Programming,然后单击 IDLE 3。 在树莓派上,单击左上角的树莓派菜单按钮,然后单击 Programming 和 Python 3 (IDLE)。 我们还可以从 Programming 菜单下选择 Thonny Python IDE。 我们还可以使用其他几种免费编辑器输入和运行 Python 代码。 Thonny,一个面向初学者的 Python IDE。 PyCharm 社区版,这是专业开发人员使用的 Python IDE。 安装 Python 第三方模块 本书中的大多数程序只需要使用 Python 标准库,它是随 Python 自动安装的。然而某些程 序需要使用第三方模块,例如 pyperclip、bext、playsound 以及 pyttsx3。这些都可以通过安装 bigbookpython 模块一次性安装。 对于 Mu Editor,我们必须安装 1.1.0-alpha 版本或更高版本。截至 2020 年,我们可以在 Code with Mu 官方网站下载页面顶部的“Try the Alpha of the Next Version of Mu”部分找到此版本。 安装完成后,单击窗口左下角的齿轮图标,可以调出 Mu Administration 窗口。选择 Third Party Packages 选项卡,在文本框中输入 bigbookpython,然后单击 OK 按钮,即可安装本书程序中用 到的所有第三方模块。 对于Visual Studio Code或 IDLE编辑器,打开编辑器并通过交互式Shell运行以下Python代码: >>> import os, sys >>> os.system(sys.executable + ' -m pip install --user bigbookpython') 0 如果一切正常,第二条指令执行完成后,会输出一个 0。如果你看到一条错误消息或其他 数字,请尝试运行以下代码,其中没有--user: >>> import os, sys >>> os.system(sys.executable + ' -m pip install bigbookpython') 0
Page
12
前 言 5 无论使用哪种编辑器,我们都可以尝试运行 import pyperclip 或 import bext,以检查安装是 否有效。如果这些导入代码的运行没有产生错误消息,则说明这些模块安装正确,你将能够运 行本书中使用这些模块的程序。 复制本书中的代码 编程是一种技能,这种技能可以通过编程活动来提高。请勿仅阅读本书中的代码或仅 将其简单地复制、粘贴到你的计算机上,你应该花些时间自己将代码输入编辑器—在编 辑器中打开一个新文件并输入代码。为了能更好地理解这些程序,请尝试在调试器下运行 它们。 输入源代码并运行成功后,请尝试对代码进行更改。标有!的注释给你提供了更改建议,每 个项目还给出了较大改动的建议。 接下来,请尝试从头开始创建程序(不要查看本书中的源代码)。你的代码不必与书中的程 序代码完全相同,你可以发明自己的版本! 一旦完全理解了本书中的程序,你可以着手创建自己的程序。大多数电子游戏和应用程序 都很复杂,需要由程序员、艺术家和设计师组成的团队联合开发。不过,许多生活中的棋盘、 纸牌和纸笔游戏通常很简单,你不妨尝试编写相应的程序。 从终端运行程序 本书用到 bext 模块的程序,其文本输出会以彩色显示。然而,从 Mu、IDLE 或其他编辑器 中运行它们时,这些颜色不会显示出来。这些程序应该通过终端(也称为命令行)窗口运行。 在 Windows 上,可以通过“开始”菜单打开命令提示符窗口。在 macOS 上,可以通过 Spotlight 运行终端。在 Ubuntu 上,可以通过 Ubuntu Dash 或按 Ctrl-Alt-T 快捷键运行终端。 如果终端窗口出现,则应该使用 cd(更改目录)命令将当前目录更改为包含.py 文件的文 件夹(“目录”是“文件夹”的另一种说法)。例如,如果使用的是 Windows,并将 Python 程序 保存在 C:\Users\Al 文件夹内,则执行以下命令: C:\>cd C:\Users\Al C:\Users\Al> 要运行 Python 程序,应在 Windows 命令提示符窗口中运行 python yourProgram.py,在 macOS 或 Linux 终端窗口中则应运行 python3 yourProgram.py。请将 yourProgram.py 替换为真实 的 Python 程序名称,示例如下: C:\Users\Al>python guess.py Guess the Number, by Al Sweigart al@inventwithpython.com I am thinking of a number between 1 and 100. You have 10 guesses left. Take a guess. --snip-- 你可以通过按 Ctrl-C 键(而不是关闭终端窗口)来终止从终端运行的程序。
Page
13
6 前 言 在手机或平板电脑上运行程序 理想情况下,你可以使用一台配备全键盘的笔记本电脑或台式计算机编写代码,因为从某种 程度上讲,使用手机甚至平板电脑默认的键盘输入代码挺麻烦的。尽管没有适用于 Android 或 iOS 的成熟 Python 解释器,但有些网站提供了可以在 Web 浏览器中使用的在线 Python 交互式 Shell。 这些网站支持本书中的大多数项目,但是不支持使用第三方模块(例如 bext、pyperclip、pyttsx3 以及 playsound)的程序,也不支持需要使用 open()函数读写文件的程序。如果程序代码中有这些内 容,则这个程序无法使用在线 Python 解释器运行。不过,本书中的大多数程序可以正常在线运行。 帮助 除非请私人导师或程序员朋友来回答你的编程问题,否则你只能靠自己找到问题的答案。 幸运的是,你的问题大多是有人问过的。“自己找到答案”是程序员要学习的一项重要技能。 如果你发现自己经常需要到互联网上查找编程问题的答案,请不要为此沮丧。你可能会觉 得到互联网上找答案而不是自己记住关于编程知识的一切属于“作弊”行为,但其实只要你在 不断学习,就不是“作弊”。因为即使是专业的软件开发人员,也会经常在互联网上搜索答案。 当程序尝试执行无效指令时,它会显示一条称为回溯的错误消息。回溯会告诉你发生了哪种错 误以及错误发生在哪一行代码。下面是一个程序示例,它在计算每个人应该得到多少块比萨时出错: Traceback (most recent call last): File "pizza.py", line 5, in <module> print('Each person gets', (slices / people), ' slices of pizza.') ZeroDivisionError: division by zero 对于这个回溯提示的错误,你也许没有意识到问题在于 people 变量被设置为 0 导致表达式 slices/people 出现除零错误。错误消息通常很短,甚至不是完整的句子,其用意在于提醒而非完 整解释。如果你是第一次遇到错误消息,可将其复制并粘贴到搜索引擎中进行搜索,通常会返 回有关错误的含义及错误出现可能的原因的详细说明。 如果直接搜索无法找到问题的解决方案,你可以将问题发布到在线论坛或向某人发送电子邮 件,以寻求帮助。为了使这个过程尽可能高效,请具体、清晰地描述问题,这意味着提供完整的源 代码和详细的错误消息,解释你已经尝试过的做法,并确切说明你所使用的操作系统和 Python 版 本。最终发布的答案不仅可以解决你的问题,还有助于将来遇到相同问题的程序员找到你的帖子。 输入代码 打字打得飞快并不是成为一名程序员必备的技能,但这无疑是大有裨益的。有些人不会盲 打,打起字来就像小鸡啄米。打字快可以让编程变得不那么麻烦。在学习使用本书中的程序时, 你肯定希望自己的眼睛看着代码而不是盯着键盘。 你可以在某些网站上学习如何打字,比如 TypingClub。好的打字程序会在计算机屏幕上显 示键盘和一双手,让你在练习过程中避免养成低头看键盘的坏习惯。与其他技能一样,打字需 要练习,你大可借编写代码来提升自己的打字技能。 善用键盘快捷键,可以免于将鼠标指针移动到菜单上再执行操作。快捷键通常写成“Ctrl-C”
Page
14
前 言 7 的形式,意味着按下键盘任一侧的 Ctrl 键的同时按下 C 键,而不是先按一次 Ctrl 键,再按一次 C 键。 使用鼠标打开应用程序顶部(在 Windows 和 Linux 中)或屏幕顶部(在 macOS 中)的菜 单栏,你可以找到常用的快捷方式,例如 Ctrl-S(保存)和 Ctrl-C(复制)。磨刀不误砍柴工, 花时间学习使用这些快捷键是值得的。 其他快捷键就没有那么重要了。例如,Windows 和 Linux 上的 Alt-Tab,macOS 上的 command-TAB,允许将焦点切换到另一个应用程序的窗口中。你可以按住 Alt 或 command 键并 重复按 TAB 选择要切换成的特定窗口。 复制和粘贴 剪贴板是操作系统中的一项功能,可以临时存储用于粘贴的数据。这些数据可以是文本、图像、 文件或其他类型的信息,这里只描述如何处理文本数据。复制文本会将当前选定文本的副本放置到 剪贴板上。粘贴文本会将剪贴板上的文本输入文本光标当前所在的位置,就像你自己即刻输入的那 样。复制和粘贴文本可让你免于重新输入计算机上已有的文本,无论文本是一行还是数百页。 要想复制和粘贴文本,首先要选择(或高亮显示)要复制的文本。你可以通过按住鼠标主 (右)键(设置为“右撇子”鼠标的即左键)并在文本上拖动来完成文本选择。不过,按住 Shift 键并使用键盘快捷键移动光标通常更快、更精确。许多应用程序允许双击选定一个词。通常还 可以三击选择整行或整段文本。 下一步是按 Ctrl-C(在 Windows 上)或 command-C(在 macOS 上)将所选文本复制到剪 贴板。剪贴板只能保存一份复制的文本,复制文本操作会替换掉之前剪贴板上的任何内容。 最后,将光标定位到你希望文本出现的位置,然后按 Ctrl-V(在 Windows 上)或 command-V (在 macOS 上)以粘贴文本。你可以根据需要粘贴多次。复制的文本会一直保留在剪贴板上, 直到复制新文本将其替换掉。 查找和替换文本 谷歌公司的搜索人类学家 Dan Russell 曾在其发表的一篇文章中谈到,他研究人们的计算机 使用习惯时发现,约 90%的人不知道可以按 Ctrl-F(在 Windows 和 Linux 上)或 command-F(在 macOS 上)在应用程序中搜索单词。这是一个非常有用的功能,不仅存在于代码编辑器中,还存 在于文字处理器、Web 浏览器、电子表格应用程序以及几乎所有能够显示文本的程序中。你可以 按 Ctrl-F 调出查找文本框,输入希望在程序中查找的单词。通常,按 F3 键会重复该搜索并高亮 显示下一个出现的该单词。与手动滚动页面查找单词相比,该功能可以为我们节省大量时间。 编辑器还具有查找和替换功能,该功能通常对应 Ctrl-H 或 command-H 快捷键,可用于定 位一段文本并将其替换为另一段文本。如果希望重命名变量或函数,这个功能很有用。不过, 我们要小心使用查找和替换功能,因为可能会错误替换与查找条件匹配的别的文本。 调试器 调试器是一种工具,它可以逐行运行程序,让我们能够检查程序变量的当前状态。它是跟
Page
15
8 前 言 踪程序缺陷的宝贵工具。这里解释 Mu Editor 调试器的功能。不用担心,基本每款调试器都提 供了相同的功能,即使它们的用户界面看上去不一样。 在调试器中启动程序要使用 IDE 中的 Debug 而不是 Run 菜单项。调试器将被启动并暂停在 程序的第一行。调试器通常都有以下按钮:Continue、Step In、Step Over、Step Out 和 Stop。 单击 Continue 按钮会使程序正常运行,直到终止或遇到断点(稍后会介绍断点)。如果你 已完成调试并希望程序正常继续运行,可以单击 Continue 按钮。 单击 Step In 按钮会使调试器运行下一行代码,然后再次暂停。如果下一行代码是函数调用 代码,调试器将“步入”该函数并跳转到该函数的第一行代码。 单击 Step Over 按钮会使调试器运行下一行代码,类似于 Step In 按钮。但是,如果下一行 代码是函数调用代码,单击 Step Over 按钮将“跳过”函数中的代码。函数的代码全速运行,一 旦函数调用返回,调试器就会暂停。Step Over 按钮比 Step In 按钮更常用。 单击 Step Out 按钮会使调试器全速运行代码,直到从当前函数返回。如果你已经使用 Step In 按钮进入了一个函数调用,现在只想继续执行指令直到退出,单击 Step Out 按钮即可。 如果你希望完全停止调试且不想继续运行程序的其余部分,可单击 Stop 按钮。Stop 按钮可 以用于立即终止程序。 可以在特定行上设置断点,让程序以正常速度运行,直到到达断点所在行,此时,调试器 会暂停,让我们检查变量并继续逐步运行各行代码。在大多数 IDE 中,可以通过双击窗口左侧 的行号设置断点。 当前存储在程序变量中的值显示在调试器的调试窗口中的某处。然而,调试程序的一种常 用方法是输出调试,即添加 print()调用以显示变量的值,然后重新运行程序。尽管这种调试方 法简单、方便,但其通常比使用调试器低效。使用输出调试方法,我们必须添加 print()调用, 重新运行程序,然后删除 print()调用。然而,重新运行程序后,你通常会发现需要添加更多的 print()调用以便查看其他变量的值。这意味着需要重新运行程序,而这次运行可能会表明需要 添加另一轮的 print()调用,以此类推。此外,忘记自己添加的某些 print()调用并不罕见,这需 要额外的删除 print()调用的操作。对于简单的程序缺陷,输出调试很方便,但从长远来看,使 用真正的调试器可以节省你的时间。 结语 编程是一项有趣的、创造性的开发技能。无论你已经掌握 Python 语法的基础知识,还是想一头 扎入真正的 Python 程序,本书中的项目都能够给你新的启发,让你明白用几页代码能实现些什么。 学习这些程序的最佳方法绝非仅仅阅读代码或将其复制、粘贴到计算机上。花些时间将本 书中的代码手动输入编辑器,培养编写代码的肌肉记忆。这么做会减慢速度,因此你可以在输 入时思考每一行代码,而不仅仅是用眼睛浏览。使用搜索引擎查找你不明白的任何指令,或在 交互式 Shell 中对其进行实验。 最后,从头开始创建程序,然后进行修改以实现你自己想要的功能。这些练习会为你应用 编程概念创建可运行的实际程序打下坚实的基础。最重要的是,希望你乐在其中!
Page
16
资源与支持 本书由异步社区出品,社区(https://www.epubit.com)为你提供相关资源和后续服务。 配套资源 本书为读者提供源代码。读者可在异步社区本书页面中单击 ,跳转到下载界面, 按提示进行操作即可。注意:为保证购书读者的权益,该操作会给出相关提示,要求输入提取 码进行验证。 勘误 作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎读者将发现的 问题反馈给我们,帮助我们提升图书的质量。 如果读者发现错误,请登录异步社区,搜索到本书页面,输入勘误信息,单击“提交”按 钮即可。本书的作者和编辑会对读者提交的勘误进行审核,确认并接受后,将赠予读者异步社 区的 100 积分(积分可用于在异步社区兑换优惠券、样书或奖品)。
Page
17
2 资源与支持 扫码关注本书 扫描下方二维码,读者将会在异步社区微信服务号中看到本书信息及相关的服务提示。 与我们联系 我们的联系邮箱是 contact@epubit.com.cn。 如果读者对本书有任何疑问或建议,请发送邮件给我们,并请在邮件标题中注明本书书名, 以便我们更高效地做出反馈。 如果读者有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发 邮件给我们;有意出版图书的作者也可以到异步社区投稿(直接访问 www.epubit.com/ contribute 即可)。 如果读者所在学校、培训机构或企业想批量购买本书或异步社区出版的其他图书,也可以 发邮件给我们。 如果读者在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或 部分内容的非授权传播,请将怀疑有侵权行为的链接通过邮件发给我们。这一举动是对作者权 益的保护,也是我们持续为广大读者提供有价值的内容的动力之源。 关于异步社区和异步图书 “异步社区”是人民邮电出版社旗下 IT 专业图书社区,致力于出版精品 IT 图书和相关学习 产品,为作译者提供优质出版服务。异步社区创办于 2015 年 8 月,提供大量精品 IT 图书和电 子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网 https://www.epubit.com。 “异步图书”是由异步社区编辑团队策划出版的精品 IT 专业图书的品牌,依托于人民邮电出版 社近 40 年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步 图书的出版领域包括软件开发、大数据、人工智能、测试、前端、网络技术等。 异步社区 微信服务号
Page
18
目 录 项目 1 Pico Fermi Bagels 猜数字游戏 ...... 1 项目 2 生日悖论 ........................................... 5 项目 3 位图消息 ........................................... 8 项目 4 21 点纸牌游戏 ................................ 11 项目 5 弹跳 DVD 标志 ............................... 17 项目 6 恺撒密码 ......................................... 22 项目 7 恺撒黑客 ......................................... 25 项目 8 日历生成器 ..................................... 27 项目 9 盒子里的胡萝卜.............................. 31 项目 10 cho-han 骰子游戏 ........................ 36 项目 11 诱饵标题生成器............................ 39 项目 12 Collatz 序列 .................................. 43 项目 13 康威生命游戏 ............................... 45 项目 14 倒计时 ........................................... 48 项目 15 地穴冒险 ....................................... 50 项目 16 钻石 ............................................... 52 项目 17 骰子数学 ....................................... 55 项目 18 掷骰子 ........................................... 60 项目 19 数字时钟 ....................................... 63 项目 20 数字流 ........................................... 65 项目 21 DNA 可视化 .................................. 68 项目 22 小鸭子 ........................................... 71 项目 23 蚀刻绘图器....................................76 项目 24 因数查找器....................................81 项目 25 “快速拔枪”..................................84 项目 26 斐波那契数列................................86 项目 27 虚拟水族箱....................................89 项目 28 Flooder 游戏 .................................96 项目 29 森林火灾模拟..............................102 项目 30 四子棋..........................................106 项目 31 猜数字.......................................... 111 项目 32 “上当受骗”................................114 项目 33 黑客小游戏..................................116 项目 34 “绞刑架”与“断头台”............121 项目 35 六边形网格..................................126 项目 36 沙漏..............................................128 项目 37 饥饿的机器人..............................133 项目 38 “我指证”....................................139 项目 39 朗顿蚂蚁......................................146 项目 40 火星文..........................................151 项目 41 幸运星..........................................154 项目 42 魔法幸运球..................................160 项目 43 播棋..............................................163 项目 44 二维版移动迷宫..........................169
Page
19
2 目 录 项目 45 三维版移动迷宫 ......................... 174 项目 46 掷 100 万次骰子结果统计 模拟器 ......................................... 181 项目 47 蒙德里安艺术品生成器 ............. 184 项目 48 3 扇门问题 .................................. 189 项目 49 乘法表 ......................................... 194 项目 50 99 瓶牛奶 1................................. 196 项目 51 99 瓶牛奶 2................................. 198 项目 52 数字系统计数器 ......................... 201 项目 53 元素周期表 ................................. 204 项目 54 儿童隐语 ..................................... 207 项目 55 强力球彩票 ................................. 210 项目 56 素数 ............................................. 214 项目 57 进度条 ......................................... 217 项目 58 彩虹 ............................................. 220 项目 59 石头剪刀布 ................................. 223 项目 60 石头剪刀布(无敌版) ............. 226 项目 61 ROT13 密码 ............................... 229 项目 62 旋转立方体 ................................. 231 项目 63 乌尔皇室游戏 ............................. 236 项目 64 7 段显示模块 ..............................243 项目 65 “闪灵地毯”................................246 项目 66 简单替换密码..............................249 项目 67 正弦消息......................................253 项目 68 滑动拼图......................................256 项目 69 蜗牛赛跑......................................261 项目 70 虚拟算盘......................................264 项目 71 声音模拟......................................269 项目 72 “海绵宝宝的嘲弄”....................272 项目 73 数独..............................................274 项目 74 语音合成......................................279 项目 75 3 张牌蒙特 ..................................281 项目 76 井字棋..........................................285 项目 77 汉诺塔..........................................288 项目 78 脑筋急转弯..................................292 项目 79 2048.............................................298 项目 80 弗吉尼亚密码..............................304 项目 81 水桶谜题......................................308 附录 A 标签索引 .......................................312 附录 B 字符映射表 ...................................314
Page
20
项目 1 在 Pico Fermi Bagels 这个逻辑推理游戏中,你要根据线索猜出一个 三位数。游戏会根据你的猜测给出以下提示之一:如果你猜对一位数字 但数字位置不对,则会提示“Pico”;如果你同时猜对了一位数字及其位 置,则会提示“Fermi”;如果你猜测的数字及其位置都不对,则会提示 “Bagels”。你有 10 次猜数字机会。 运行程序 运行 bagels.py,输出如下所示: Bagels, a deductive logic game. By Al Sweigart al@inventwithpython.com I am thinking of a 3-digit number. Try to guess what it is. Here are some clues: When I say: That means: Pico One digit is correct but in the wrong position. Fermi One digit is correct and in the right position. Bagels No digit is correct. I have thought up a number. You have 10 guesses to get it. Guess #1: > 123 Pico Guess #2: > 456 Bagels Guess #3: > 178 Pico Pico --snip-- Guess #7: > 791 Fermi Fermi Guess #8: > 701 You got it! Do you want to play again? (yes or no) > no Thanks for playing! Pico Fermi Bagels 猜数字游戏
The above is a preview of the first 20 pages. Register to read the complete e-book.
Comments 0
Loading comments...
Reply to Comment
Edit Comment