首页 > > > 笨办法学+Python+(第三版).pdf

笨办法学+Python+(第三版).pdf

笨办法学+Python+(第三版).pdf

上传者: 152*****054@sina.cn 2014-02-24 评分1 评论0 下载3 收藏10 阅读量498 暂无简介 简介 举报

简介:本文档为《笨办法学+Python+(第三版)pdf》,可适用于软件工程领域,主题内容包含笨办法学Python(第三版)欢迎阅读《笨办法学Python》第三版。本书中译本发布于https:learnpythonthehardwayzhcn符等。

笨办法学 Python (第三版) 欢迎阅读《笨办法学 Python》第三版。本书中译本发布于 https://learn-python-the-hard-way-zh_cn- translation.readthedocs.org 英文原版地址为 http://learnpythonthehardway.org/book/ Contents: • • 前言:笨办法更简单 • 习题 0: 准备工作 • 习题 1: 第一个程序 • 习题 2: 注释和井号 • 习题 3: 数字和数学计算 • 习题 4: 变量 (variable) 和命名 • 习题 5: 更多的变量和打印 • 习题 6: 字符串 (string) 和文本 • 习题 7: 更多打印 • 习题 8: 打印,打印 • 习题 9: 打印,打印,打印 • 习题 10: 那是什么? • 习题 11: 提问 • 习题 12: 提示别人 • 习题 13: 参数、解包、变量 • 习题 14: 提示和传递 • 习题 15: 读取文件 • 习题 16: 读写文件 • 习题 17: 更多文件操作 • 习题 18: 命名、变量、代码、函数 • 习题 19: 函数和变量 • 习题 20: 函数和文件 • 习题 21: 函数可以返回东西 • 习题 22: 到现在你学到了哪些东西? • 习题 23: 读代码 • 习题 24: 更多练习 • 习题 25: 更多更多的练习 • 习题 26: 恭喜你,现在可以考试了! • 习题 27: 记住逻辑关系 • 习题 28: 布尔表达式练习 • 习题 29: 如果 (if) • 习题 30: Else 和 If • 习题 31: 作出决定 • 习题 32: 循环和列表 • 习题 33: While 循环 • 习题 34: 访问列表的元素 • 习题 35: 分支和函数 • 习题 36: 设计和调试 • 习题 37: 复习各种符号 • 习题 38: 列表的操作 • 习题 39: 字典 , 可爱的字典 • 习题 40: 模块、类、对象 • 习题 41: 物以类聚 • 习题 42: 对象、类、以及从属关系 • 习题 43: 来自 Percal 25 号行星的哥顿人 (Gothons) • 习题 44: 继承 (Inheritance) VS 合成 (Composition) • 习题 45: 你来制作一个游戏 • 习题 46: 一个项目骨架 • 习题 47: 自动化测试 • 习题 48: 更复杂的用户输入 • 习题 49: 创建句子 • 习题 50: 你的第一个网站 • 习题 51: 从浏览器中获取输入 • 习题 52: 创建你的 web 游戏 • 下一步 • 老程序员的建议 Indices and tables • Search Page 译者前言 《笨办法学 Python》(Learn Python The Hard Way,简称 LPTHW)是 Zed Shaw 编写的一本 Python 入门书籍。适合对计算机了解不多,没有学过编程,但对编程感兴趣的朋友学习使用。这本书以 习题的方式引导读者一步一步学习编程,从简单的打印一直讲到完整项目的实现。也许读完这本书并不 意味着你已经学会了编程,但至少你会对编程语言以及编程这个行业有一个初步的了解。 本书区别于其它入门书籍的特点如下: • 注重实践。本书提供了足够的练习代码,如果你完成了所有的练习(包括加分习题),那你已经 写了上万行的代码。要知道很多职业程序员一年也就写几万行代码而已。 • 注重能力培养。除了原序言提到的“读和写”、“注重细节”、以及“发现不同”这样的基本能 力以外,本书还培养了读者自己专研问题和寻求答案的能力。 • 注重好习惯的养成。本书详细地讲解了怎样写出好的代码、好的注释、好的项目。这会让你在后 续的学习中少走很多弯路。 本书结构非常简单,其实就是 52 个习题。其中 26 个覆盖了输入输出、变量、以及函数三个课题,另外 26 个覆盖了一些比较高级的话题,如条件判断、循环、类和对象、代码测试、以及项目的实现等。每一 章节的格式基本都是一样的,以代码练习题开始,读者照着说明编写代码(不允许复制粘贴),运行并 检查结果,然后再做一下加分习题就可以了。当然如果你觉得加分习题对你来说有点难,你也可以暂时 跳过,以后再完成也没关系。 另外阅读本书还需要你有一定的英文能力。其实学编程不懂英语是很吃亏的,毕竟编程语言都是基于英 语,而编程社群的主要交流方式也是英语。不会英语的人在编程界可能就只好当二等公民了。本书的翻 译尽量保留了所有的英文专业词汇(可能会有中文说明),而且遵照 Zed 的建议,代码及答案部分没有 翻译成中文,读者看到不懂的地方,请自己查字典解决。 如果你对自己的英文能力比较有信心,译者强烈推荐你直接去下载阅读英文原版。这本书代码较多,文 字内容较少,因此英文原版的阅读理解也比较容易。 LPTHW 的风格和别的书差异很大。它没有像一般的入门书籍一样通过讨好读者以激发读者兴趣,而是 直截了当地告诉你你需要做什么,需要注意什么。这种风格可能会让人觉得枯燥乏味,读者姑且把这也 当做 Hard Way 的一部分把。所以如果你觉得实在不能适应这种风格,Zed 推荐你看下面两本书: • How To Think Like A Computer Scientist • A Byte Of Python 这本书有 中译版 本书的电子版会随时跟着作者更新。你可以通过 Read The Docs 读到最新的网页版内容,也可以到 bitbucket 代码仓库 下载 PDF 文件。如果你对本书的翻译有任何意见和建议,你可以通过 bitbucket 进 行反馈。 你可以访问 lulu.com 购买本书的英文印刷版,这也是对原作者的支持。 原书版权为 Zed Shaw 所有,译文版权为 Zed Shaw 和译者共有。译文遵循原书的版权规定:只允许完 整转载,禁止商业用途。 版本历史 第二版加入了 web 编程的内容。 第三版扩充了面向对象编程的部分,并且为必要的章节添加了 FAQ。 前言:笨办法更简单 这本小书的目的是让你起步编程。虽然书名说是“笨办法”,但其实并非如此. 所谓的“笨办法”是指本书 教授的方式。本书让你通过练习和记忆来慢慢打好技术基础,然后让你由浅入深地把自己学会的技巧应 用到各种问题上面。 在这本书的帮助下,你将通过非常简单的练习学会一门编程语言。做练习是每个程序员的必经之路: 1. 做每一道习题 2. 一字不差地写出每一个程序 3. 让程序运行起来 就是这样了。刚开始这对你来说会非常难,但你需要坚持下去。如果你通读了这本书,每晚花个一两小 时做做习题,你可以为自己读下一本编程书籍打下良好的基础。通过这本书你学到的可能不是真正的编 程,但你会学到最基本的学习方法。 这本书的目的是教会你编程新手所需的三种最重要的技能:读和写、注重细节、发现不同。 读和写 很显然,如果你连打字都成问题的话,那你学习编程也会成问题。尤其如果你连程序源代码中的那些奇 怪字符都打不出来的话,就根本别提编程了。没有这样基本技能的话,你将连最基本的软件工作原理都 难以学会。 为了让你记住各种符号的名字并对它们熟悉起来,你需要将代码写下来并且运行起来。这个过程也会让 你对编程语言更加熟悉。 注重细节 区分好程序员和差程序员的最重要的一个技能就是对于细节的注重程度。事实上这是任何行业区分好坏 的标准。如果缺乏对于工作的每一个微小细节的注意,你的工作成果将缺乏重要的元素。以编程来讲, 这样你得到的结果只能是毛病多多难以使用的软件。 通过将本书里的每一个例子一字不差地打出来,你将通过实践训练自己,让自己集中精力到你作品的细 节上面。 发现不同 程序员长年累月的工作会培养出一个重要技能,那就是对于不同点的区分能力。有经验的程序员拿着两 份仅有细微不同的程序,可以立即指出里边的不同点来。程序员甚至造出工具来让这件事更加容易,不 过我们不会用到这些工具。你要先用笨办法训练自己,等你具备一些相关能力的时候才可以使用这些工 具。 在你做这些练习并且打字进去的时候,你一定会写错东西。这是不可避免的,即使有经验的程序员也会 偶尔写错。你的任务是把自己写的东西和要求的正确答案对比,把所有的不同点都修正过来。这样的过 程可以让你对于程序里的错误和 bug 更加敏感。 不要复制粘贴 你必须手动将每个练习打出来。复制粘贴会让这些练习变得毫无意义。这些习题的目的是训练你的双手 和大脑思维,让你有能力读代码、写代码、观察代码。如果你复制粘贴的话,那你就是在欺骗自己,而 且这些练习的效果也将大打折扣。 对于坚持练习的一点提示 在你通过这本书学习编程时,我正在学习弹吉他。我每天至少训练 2 小时,至少花一个小时练习音阶、 和声、和琶音,剩下的时间用来学习音乐理论和歌曲演奏以及训练听力等。有时我一天会花 8 个小时来 练习,因为我觉得这是一件有趣的事情。对我来说,要学好一样东西,每天的练习是必不可少的。就算 这天个人状态很差,或者说学习的课题实在太难,你也不必介意,只要坚持尝试,总有一天困难会变得 容易,枯燥也会变得有趣了。 在你通过这本书学习编程的过程中要记住一点,就是所谓的“万事开头难”,对于有价值的事情尤其如 此。也许你是一个害怕失败的人,一碰到困难就想放弃。也许你是一个缺乏自律的人,一碰到“无聊” 的事情就不想上手。也许因为有人夸你“有天分”而让你自视甚高,不愿意做这些看上去很笨拙的事情, 怕有负你”神童”的称号。也许你太过激进,把自己跟有 20 多年经验的编程老手相比,让自己失去了信 心。 不管是什么原因,你一定要坚持下去。如果你碰到做不出来的加分习题,或者碰到一节看不懂的习题, 你可以暂时跳过去,过一阵子回来再看。只要坚持下去,你总会弄懂的。 一开始你可能什么都看不懂。这会让你感觉很不舒服,就像学习人类的自然语言一样。你会发现很难记 住一些单词和特殊符号的用法,而且会经常感到很迷茫,直到有一天,忽然一下子你会觉得豁然开朗, 以前不明白的东西忽然就明白了。如果你坚持练习下去,坚持去上下求索,你最终会学会这些东西的。 也许你不会成为一个编程大师,但你至少会明白程序是怎么工作的。 如果你放弃的话,你会失去达到这个程度的机会。你会在第一次碰到不明白的东西时(几乎是所有的东西) 放弃。如果你坚持尝试,坚持写习题,坚持尝试弄懂习题的话,你最终一定会明白里边的内容的。 如果你通读了这本书,却还是不知道编程是怎么回事。那也没关系,至少你尝试过了。你可以说你已经 尽过力但成效不佳,但至少你尝试过了。这也是一件值得你骄傲的事情。 给“小聪明”们的警告 有的学过编程的人读到这本书,可能会有一种被侮辱的感觉。其实本书中没有任何要居高临下地贬低任 何人的意思。只不过是我比我面向的读者群知道的更多而已。如果你觉得自己比我聪明,然后觉得我在 居高临下,那我也没办法,因为你根本就不属于我的目的读者群。 如果你觉得这本书里到处都在侮辱你的智商,那我对你有三个建议: 1. 别读这本书了。我不是写给你的,我是写给需要学习的人的。 2. 放下架子好好学。如果你认为你什么都知道,那你就很难从比你强的人身上学到什么了。 3. 学 Lisp 去。我听说什么都知道的人可喜爱 Lisp 了。 对于其他在这里学习的人,你们读的时候就想着我在微笑就可以了,虽然我的眼睛里还带着恶作剧的闪 光。 许可协议 Copyright (C) 2010 by Zed A. Shaw. 你可以在不收取任何费用,而且不修改任何内容的前提下自由分 发这本书给任何人。但是本书的内容只允许完整原封不动地进行分发和传播。也就是说如果你用这本书 给人上课,只要你不向学生收费,而且给他们看的书是完整未加修改的,那就没问题。 特别感谢 首先我要感谢帮助我完成这版书的人。首先是 Pretty Girl Editing Services 可爱的编辑所做的编辑工作。 然后是 Greg Newman,他提供了美工图并帮我设计了封面,而且还帮忙复审了本书。是他让这本书看 上去像本真正的书籍,而且就算我没在第一版里提到他的辛劳,他也没跟我计较。我还要感谢 Brian Shumate 在网站设计方面的帮助,这方面的帮助也是我非常需要的。 最后,我还要感谢成千上万读过本书第一版而且提出 bug 报告和改进建议的读者。你们的贡献让这本书 的内容更为扎实,没有你们我是做不到的。谢谢你们。 习题 0: 准备工作 这道习题并没有代码内容,它的主要目的是让你在计算机上安装好 Python。你应该尽量照着说明进行操 作,例如 Mac OSX 默认已经安装了 Python 2,所以就不要在上面安装 Python 3 或者别的 Python 版 本了。 Warning 如果你不知道怎样使用 Windows 下的 PowerShell,或者 OSX 下的 Terminal,或者 Linux 下的 “bash”,那你就需要学习了。我有一个免费的快速入门教程放在 http://cli.learncodethehardway.org/,你可以快速学到 PowerShell 和 Terminal 的基本用法。学完后 再回来看这本书吧。 Mac OSX 你需要做下列任务来完成这个练习: 1. 用浏览器打开 http://www.barebones.com/products/textwrangler/ 找到并安装 TextWrangler 文本编辑器。 2. 把 TextWrangler (也就是你的编辑器) 放到 Dock 中,以方便日后使用。 3. 找到系统中的 “命令行终端(Terminal)” 程序。到处找找,你会找到的。 4. 把 Terminal 也放到 Dock 里面。 5. 运行 Terminal 程序,这个程序看上去不怎么地。 6. 在 Terminal 程序里边运行 python。运行的方法是输入程序的名字再敲一下回车。 7. 敲击 CTRL-D (^D) 退出 python。 8. 这样你就应该退回到敲 python 前的提示界面了。如果没有的话自己研究一下为什么。 9. 学着使用 Terminal 创建一个目录,你可以上网搜索怎样做。 10.学着使用 Terminal 进入一个目录,同样你可以上网搜索。 11.使用你的编辑器在你进入的目录下建立一个文件。你将建立一个文件。使用 “Save” 或者 “Save As...” 选项,然后选择这个目录。 12.使用键盘切换回到 Terminal 窗口,如果不知道怎样使用键盘切换,你一样可以上网搜索。 13.回到 Terminal,看看你能不能使用命令看到你新建的文件,上网搜索如何将文件夹中的内容列 出来。 OSX: 你应该看到的结果 以下是我在自己电脑的 Terminal 中执行上述练习时看到的内容。和你做的结果会有一些不同,所以看 看你能不能找出两者不同点来。 Last login: Sat Apr 24 00:56:54 on ttys001 ~ $ python Python 2.5.1 (r251:54863, Feb 6 2009, 19:02:12) [GCC 4.0.1 (Apple Inc. build 5465)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> ^D ~ $ mkdir mystuff ~ $ cd mystuff mystuff $ ls # ... 使用 TextWrangler 编辑 test.txt ... mystuff $ ls test.txt mystuff $ Windows Note 感谢 zhmark 的贡献。 1. 用浏览器打开 http://notepad-plus-plus.org/ 下载并安装 Notepad++ 文本编辑器。这个操作 无需管理员权限。 2. 把 Notepad++ 放到桌面或者快速启动栏,这样你就可以方便地访问到该程序了。这两条在安 装选项中可以看到。 3. 从开始菜单运行“PowerShell”程序。你可以使用开始菜单的搜索功能,输入名称后敲回车即可 打开。 4. 为它创建一个快捷方式,放到桌面或者快速启动栏中以方便使用。 5. 运行命令行终端程序(也就是 PowerShell),这个程序看上去不怎么地。 6. 在命令行终端里边运行 python。运行的方法是输入程序的名字再敲一下回车。 1. 如果你运行 python 发现它不存在(python 不是可执行命令,或者系统找不到 python云云)。你需要访问 http://python.org/download 并且安装 Python。 2. 确认你安装的是 Python 2 而不是 Python 3。 3. 你也可以试试 ActiveState Python,尤其是你没有管理员权限的时候。 4. 如果你安装好了但是 python 还是不能被识别,那你需要在 powershell 下输入 并执行以下命令: [Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27", "User") 5. 关闭并重启 powershell,确认 python 现在可以运行。如果不行的话你可能需要 重启电脑。 7. 键入 CTRL-Z (^Z),再敲回车以退出 python。 8. 这样你就应该退回到敲 python 前的提示界面了。如果没有的话自己研究一下为什么。 9. 学着使用 Terminal 创建一个目录,你可以上网搜索怎样做。 10.学着使用 Terminal 进入一个目录。同样你可以上网搜索。 11.使用你的编辑器在你进入的目录下建立一个文件。你将建立一个文件,使用 “Save” 或者 “Save As...” 选项,然后选择这个目录。 12.使用键盘切换回到 Terminal 窗口,如果不知道怎样使用键盘切换,你一样可以上网搜索。 13.回到 Terminal,看看你能不能使用命令看到你新建的文件,上网搜索如何将文件夹中的内容列 出来。 Warning 有时这一步你会漏掉:Windows 下装了 Python 但是没有正确配置路径。确认你在 powershell 下 输入了 [Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27", "User")。你也许需要重启 powershell 或者计算机来让路径设 置生效。 Windows: 你应该看到的结果 > python ActivePython 2.6.5.12 (ActiveState Software Inc.) based on Python 2.6.5 (r265:79063, Mar 20 2010, 14:22:52) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> ^Z > mkdir mystuff > cd mystuff ... 使用 Notepad++ 编辑 mystuff 目录下的 test.txt ... > <如果你没有使用管理员权限安装,你会看到一堆错误。忽略它们,按回车即可。> > dir Volume in drive C is Volume Serial Number is 085C-7E02 Directory of C:\Documents and Settings\you\mystuff 04.05.2010 23:32 <DIR> . 04.05.2010 23:32 <DIR> .. 04.05.2010 23:32 6 test.txt 1 File(s) 6 bytes 2 Dir(s) 14 804 623 360 bytes free > 你看到的命令行信息,Python 信息,以及其它一些东西可能会非常不一样,不过应该大致不差。你可以 通过 http://learnpythonthehardway.org 把你找到的错处告诉我们,我们会修正过来。 Linux Linux 系统可谓五花八门,安装软件的方式也各有不同。我们假设作为 Linux 用户的你已经知道如何安 装软件包了,以下是给你的操作说明: 1. 用浏览器打开 http://learnpythonthehardway.org/exercise0.html 下载并安装 gedit 文本编辑器。 2. 把 gedit (也就是你的编辑器) 放到窗口管理器显见的位置,以方便日后使用。 1. 运行 gedit,我们要先改掉一些愚蠢的默认设定。 2. 从 gedit menu 中打开 Preferences,选择 Editor 页面。 3. 将 Tab width: 改为 4。 4. 选择 (确认有勾选到该选项) Insert spaces instead of tabs。 5. 然后打开 “Automatic indentation” 选项。 6. 转到 View 页面,打开 “Display line numbers” 选项。 3. 找到 “Terminal” 程序。它的名字可能是 GNOME Terminal、Konsole、或者 xterm。 4. 把 Terminal 也放到 Dock 里面。 5. 运行 Terminal 程序,这个程序看上去不怎么地。 6. 在 Terminal 程序里边运行 python。运行的方法是输入程序的名字再敲一下回车。 a. 如果你 运行 python 发现它不存在的话,你需要安装它,而且要确认你安装的是 Python 2 而非 Python 3。 7. 敲击 CTRL-D (^D) 以退出 python。 8. 这样你就应该退回到敲 python 前的提示界面了。如果没有的话自己研究一下为什么。 9. 学着使用 Terminal 创建一个目录。你可以上网搜索怎样做。 10.学着使用 Terminal 进入一个目录。同样你可以上网搜索。 11.使用你的编辑器在你进入的目录下建立一个文件。你将建立一个文件,使用 “Save” 或者 “Save As...” 选项,然后选择这个目录。 12.使用键盘切换回到 Terminal 窗口,如果不知道怎样使用键盘切换,你一样可以上网搜索。 13.回到 Terminal,看看你能不能使用命令看到你新建的文件,上网搜索如何将文件夹中的内容列 出来。 Linux: 你应该看到的结果 [~]$ python Python 2.6.5 (r265:79063, Apr 1 2010, 05:28:39) [GCC 4.4.3 20100316 (prerelease)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> [~]$ mkdir mystuff [~]$ cd mystuff # ... 使用 gedit编辑 text.txt ... [mystuff]$ ls test.txt [mystuff]$ 你看到的命令行信息,Python 信息,以及其它一些东西可能会非常不一样。不过应该大致不差就是了。 给新手的告诫 你已经完成了这节练习,取决于你对计算机的熟悉程度,这个练习对你而言可能会有些难。如果你觉得 有难度的话,你要自己克服困难,多花点时间学习一下。因为如果你不会这些基础操作的话,编程对你 来说将会更难学习。 如果有程序员告诉你让你使用 vim 或者 emacs,那你应该拒绝他们。当你成为一个更好的程序员的时 候,这些编辑器才会适合你使用。你现在需要的只是一个可以编辑文本的编辑器。我们使用 gedit TextWrangler 或者 Notepad++ 是因为它很简单,而且在不同的系统上面使用起来是一样的。就 连专业程序员也会使用 gedit,所以对于初学而言它已经足够了。 也许有程序员会告诉你让你安装和学习 Python 3。你应该告诉他们“等你电脑里的所有 python 代码都 支持 Python 3 了,我再试着学学吧。”你这句话足够他们忙活个十来年的了。 总有一天你会听到有程序员建议你使用 Mac OSX 或者 Linux。如果他喜欢字体美观,他会告诉你让你 弄台 Mac OSX 计算机,如果他们喜欢操作控制而且留了一部大胡子,他会让你安装 Linux。这里再次 向你说明,只要是一台手上能用的电脑就可以了。你需要的只有三样东西: gedit、一个命令行终端、 还有 python。 最后要说的是这节练习的准备工作的目的,也就是让你可以在以后的练习中顺利地做到下面的这些事情: 1. 写出习题的代码,在 Linux 下用 gedit,OSX 下用 TextWrangler,Windows 下用 Notepad++。 2. 运行你写的习题。 3. 修改错误的地方。 4. 重复上述步骤。 其他的事情只会让你更困惑,所以还是坚持按计划进行吧。 习题 1: 第一个程序 你应该在练习 0 中花了不少的时间,学会了如何安装文本编辑器、运行文本编辑器、以及如何运行命令 行终端,而且你已经花时间熟悉了这些工具。请不要跳过前一个练习的内容直接进行下面的内容,这也 是本书唯一的一次这样的警示。 将下面的内容写到一个文件中,取名为 ex1.py。这个命名方式很重要,Python 文件最好以 .py 结 尾。 1 2 3 4 5 6 7 print "Hello World!" print "Hello Again" print "I like typing this." print "This is fun." print 'Yay! Printing.' print "I'd much rather you 'not'." print 'I "said" do not touch this.' 如果你使用的是 Mac OSX 下的 TextWrangler,那你的文本编辑器大致是这个样子: 如果你在 Windows 下使用 Notepad++,那你看到的应该是这个: 别担心编辑器长得是不是一样,关键是以下几点: 1. 注意我没有输入左边的行号(1-7)。这些是额外打印到书里边的,以方便对代码具体的某一行进 行讨论。例如“参见第 5 行……”你无需将这些也写进 python 脚本中去。 2. 注意我截图中开始的 print 语句,它和代码范例中是完全一样的,而且是精确的完全相同,不 仅仅是表面相似而已。要让这段脚本正常工作,代码中的每个字符都必须完全匹配。当然,显示 的颜色可能是不同的,颜色并不重要,只有字符才是重要的。 然后你需要在命令行终端通过输入以下内容来运行这段代码: python ex1.py 如果你写对了的话,你应该看到和下面一样的内容。如果不一样,那就是你弄错了什么东西。不是计算 机出错了,计算机没错。 你应该看到的结果 在 Mac OSX 的 Terminal 下面你应该看到以下内容: 在 Windows 的 PowerShell 下你应该看到这些: 你也许会看到 python ex1.py 前面显示了不同的用户名,计算机名,以及其他一些信息,这不是问 题,重要的是你输入了命令,而且看到了相同的输出。 如果你看到类似如下的错误信息: 1 2 3 $ python ex/ex1.py File "ex/ex1.py", line 3 4 5 print "I like typing this. ^ SyntaxError: EOL while scanning string literal 这些内容你应该学会看懂的,这是很重要的一点,因为你以后还会犯类似的错误。就是我现在也会犯这 样的错误。让我们一行一行来看。 1. 首先我们在命令行终端输入命令来运行 ex1.py 脚本。 2. Python 告诉我们 ex1.py 文件的第 3 行有一个错误。 3. 然后这一行的内容被打印了出来。 4. 然后 Python 打印出一个 ^ (井号,caret) 符号,用来指示出错的位置。注意到少了一个 " (双 引号,double-quote) 符号了吗? 5. 最后,它打印出了一个“语法错误(SyntaxError)”告诉你究竟是什么样的错误。通常这些错误信 息都非常难懂,不过你可以把错误信息的内容复制到搜索引擎里,然后你就能看到别人也遇到过 这样的错误,而且你也许能找到如何解决这个问题。 Warning 如果你来自另外一个国家,而且你看到关于 ASCII 编码的错误,那就在你的 python 脚本的最上面加入 这一行: # -*- coding: utf-8 -*- 这样你就在脚本中使用了 unicode UTF-8 编码,这些错误就不会出现了。 加分习题 你还会有 加分习题 需要完成。加分习题里边的内容是供你尝试的。如果你觉得做不出来,你可以暂时 跳过,过段时间再回来做。 在这个练习中,试试这些东西: 1. 让你的脚本再多打印一行。 2. 让你的脚本只打印一行。 3. 在一行的起始位置放一个 ‘#’ (octothorpe) 符号。它的作用是什么?自己研究一下。 从现在开始,除非特别情况,我将不再解释每个习题的工作原理了。 Note 井号有很多的英文名字,例如:’octothorpe(八角帽)’,’pound(英镑符)’, ‘hash(电话的#键)’, ‘mesh(网)’ 等。 常见问题回答 我可不可以使用 IDLE? 不行。你应该使用 OSX 的 Terminal 或者 Windows 的 Powershell,和我这里演示的一样。如 果你不知道如何使用它们,你可以去读一下《命令行快速入门》,网址是 http://cli.learncodethehardway.org/book/ 怎样让编辑器显示不同颜色? 编辑之前先将文件保存为 .py 格式,例如 ex1.py,后面编辑时你就可以看到各种颜色了。 运行 ex1.py 时看到 SyntaxError: invalid syntax。 你也许已经运行了 python,然后又在 python 环境下运行了一遍 python。关掉并重启命令行终 端,重来一遍,只键入 python ex1.py 就可以了。 我还是没法再 PowerShell 下运行 python。 那就给你个视频教程看看吧: http://www.youtube.com/watch?v=ndNlFy-5GKA 错误信息 can’t open file ‘ex1.py’: [Errno 2] No such file or directory。 你需要在你创建文件的目录下运行命令。确认你事先使用 cd 命令进入了这层目录下。加入你的文 件存在 lpthw/ex1.py 下面,那你需要先执行 cd lpthw/ 再运行 python ex1.py,如果你不明白命 令的意思,那就去看看问题 1 中提到的《命令行快速入门》吧。 怎样在代码中输入我们国家的语言文字? 确认在文件开头输入这行: # -*- coding: utf-8 -*- 我的文件无法运行,它直接回到了命令行,没有任何输出。 很有可能是你把代码做了字面理解,认为 print "Hello World!" 就是让你在文件中 print "Hello World!" 出来,于是你没有输入 print。你的代码应该和我的完全一模一样。我的每 行里边有 print,你的也要确保都有,这样代码才能正常运行。 习题 2: 注释和井号 程序里的注释是很重要的。它们可以用自然语言告诉你某段代码的功能是什么。在你想要临时移除一段 代码时,你还可以用注解的方式将这段代码临时禁用。接下来的练习将让你学会注释: 1 2 3 4 5 6 7 8 9 # A comment, this is so you can read your program later. # Anything after the # is ignored by python. print "I could have code like this." # and the comment after is ignored # You can also use a comment to "disable" or comment out a piece of code: # print "This won't run." print "This will run." 从现在开始,我将用这样的方式来写代码。我一直在强调“完全相同”,不过你也不必按照字面意思理 解。你的程序在屏幕上的显示可能会有些不同,不过重要的是你在文本编辑器中输入的文本的正确性。 事实上,我可以用任何编辑器写出这段程序,而且内容是完全一样的。 你应该看到的结果 $ python ex2.py I could have code like this. This will run. $ 再次说明,我不会再贴各种屏幕截图了。你应该明白上面的内容是输出内容的字面翻译,而 $ python ... 和最后的 $ 之间才是你应该关心的内容。 加分习题 1. 弄清楚”#”符号的作用。而且记住它的名字。(中文为井号,英文为 octothorpe 或者 pound character)。 2. 打开你的 ex2.py 文件,从后往前逐行检查。从最后一行开始,倒着逐个单词单词检查回去。 3. 有没有发现什么错误呢?有的话就改正过来. 4. 朗读你写的习题,把每个字符都读出来。有没有发现更多的错误呢?有的话也一样改正过来。 常见问题回答 你确定 # 符号的名称是 pound character? 我叫它 octothorpe,这个名字没有哪个国家在用,不过所有的人都能看懂它的意思。每个国家都 觉得他们的叫法最正确最闪亮。对我来说这是自大狂的想法,而且你也没必要去关心这种细枝末节, 学习编程才是更重要的事情。 如果 # 是注解的意思,那么为什么 # -*- coding: utf-8 -*- 能起作用呢? Python 其实还是没把这行当做代码处理,这种用法只是让字符格式被识别的一个取巧的方案,或 者说是一个没办法的办法吧。在编辑器设置里你还能看到一个类似的注解。 为什么 print "Hi # there." 里的 # 没被忽略掉? 这行代码里的 # 处于字符串内部,所以它就是引号结束前的字符串中的一部分,这时它只是一个 普通字符,而不代表注解的意思。 怎样做多行注解? 每行前面放一个 # 就可以了。 我们国家的键盘上找不到 # 字符,怎么办? 有的国家要通过 Alt 键组合才能输入这个字符。你可以用搜索引擎找一下解决方案。 为什么要让我倒着阅读代码? 这样可以避免让你的大脑跟着每一段代码内容的意思走,这样可以让你精确处理每个片段,从而让 你更容易地发现代码中的错误。这是一个很好使的查错技巧。 习题 3: 数字和数学计算 每一种编程语言都包含处理数字和进行数学计算的方法。不必担心,程序员经常撒谎说他们是多么牛的 数学天才,其实他们根本不是。如果他们真是数学天才,他们早就去从事数学相关的行业了,而不是写 写广告程序和社交网络游戏,从人们身上偷赚点小钱而已。 这章练习里有很多的数学运算符号。我们来看一遍它们都叫什么名字。你要一边写一边念出它们的名字 来,直到你念烦了为止。名字如下: • + plus 加号 • - minus 减号 • / slash 斜杠 • * asterisk 星号 • % percent 百分号 • < less-than 小于号 • > greater-than 大于号 • <= less-than-equal 小于等于号 • >= greater-than-equal 大于等于号 有没有注意到以上只是些符号,没有运算操作呢?写完下面的练习代码后,再回到上面的列表,写出每 个符号的作用。例如 + 是用来做加法运算的。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 print "I will now count my chickens:" print "Hens", 25 + 30 / 6 print "Roosters", 100 - 25 * 3 % 4 print "Now I will count the eggs:" print 3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6 print "Is it true that 3 + 2 < 5 - 7?" print 3 + 2 < 5 - 7 print "What is 3 + 2?", 3 + 2 print "What is 5 - 7?", 5 - 7 print "Oh, that's why it's False." print "How about some more." print "Is it greater?", 5 > -2 print "Is it greater or equal?", 5 >= -2 print "Is it less or equal?", 5 <= -2 你应该看到的结果 $ python ex3.py I will now count my chickens: Hens 30 Roosters 97 Now I will count the eggs: 7 Is it true that 3 + 2 < 5 - 7? False What is 3 + 2? 5 What is 5 - 7? -2 Oh, that's why it's False. How about some more. Is it greater? True Is it greater or equal? True Is it less or equal? False $ 加分习题 1. 使用 # 在代码每一行的前一行为自己写一个注解,说明一下这一行的作用。 2. 记得开始时的 <练习 0> 吧?用里边的方法把 Python 运行起来,然后使用刚才学到的运算符号, 把 Python当做计算器玩玩。 3. 自己找个想要计算的东西,写一个 .py 文件把它计算出来。 4. 有没有发现计算结果是”错”的呢?计算结果只有整数,没有小数部分。研究一下这是为什么, 搜索一下“浮点数(floating point number)”是什么东西。 5. 使用浮点数重写一遍 ex3.py,让它的计算结果更准确(提示: 20.0 是一个浮点数)。 常见问题回答 为什么 % 是求余数符号,而不是百分号? 很大程度上只是因为涉及人员选择了这个符号而已。一般而言它是百分号没错,就跟 100% 表示 百分之百一样。在编程中除法我们用了 /,而求余数又恰恰选择了 % 这个符号,仅此而已。 % 是怎么工作的? 换个说法就是“X 除以 Y 还剩余 J”,例如“100 除以 16 还剩 4”。 % 运算的结果就是 J 这部 分。 运算优先级是什么样子的? 美国我们用 PEMDAS 这个简称来辅助记忆,它的意思是“括号、指数、乘、除、加、减”—— Parentheses Exponents Multiplication Division Addition Subtraction ——这也是 Python 里的 运算优先级。 为什么 / 除法算出来的比实际小? 其实不是没算对,而是它将小数部分丢弃了,试试 7.0 / 4.0 和 7 / 4 比较一下,你就看出不同了。 习题 4: 变量(variable)和命名 你已经学会了 print 和算术运算。下一步你要学的是“变量”。在编程中,变量只不过是用来指代某 个东西的名字。程序员通过使用变量名可以让他们的程序读起来更像英语。而且因为程序员的记性都不 怎么地,变量名可以让他们更容易记住程序的内容。如果他们没有在写程序时使用好的变量名,在下一 次读到原来写的代码时他们会大为头疼的。 如果你被这章习题难住了的话,记得我们之前教过的:找到不同点、注意细节。 1. 在每一行的上面写一行注解,给自己解释一下这一行的作用。 2. 倒着读你的 .py 文件。 3. 朗读你的 .py 文件,将每个字符也朗读出来。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 cars = 100 space_in_a_car = 4.0 drivers = 30 passengers = 90 cars_not_driven = cars - drivers cars_driven = drivers carpool_capacity = cars_driven * space_in_a_car average_passengers_per_car = passengers / cars_driven print "There are", cars, "cars available." print "There are only", drivers, "drivers available." print "There will be", cars_not_driven, "empty cars today." print "We can transport", carpool_capacity, "people today." print "We have", passengers, "to carpool today." print "We need to put about", average_passengers_per_car, "in each car." Note space_in_a_car 中的 _ 是 下划线(underscore) 字符。你要自己学会怎样打出这个字符来。 这个符号在变量里通常被用作假想的空格,用来隔开单词。 你应该看到的结果 $ python ex4.py There are 100 cars available. There are only 30 drivers available. There will be 70 empty cars today. We can transport 120.0 people today. We have 90 to carpool today. We need to put about 3 in each car. $ 加分习题 当我刚开始写这个程序时我犯了个错误,python 告诉我这样的错误信息: Traceback (most recent call last): File "ex4.py", line 8, in <module> average_passengers_per_car = car_pool_capacity / passenger NameError: name 'car_pool_capacity' is not defined 用你自己的话解释一下这个错误信息,解释时记得使用行号,而且要说明原因。 更多的加分习题: 1. 我在程序里用了 4.0 作为 space_in_a_car 的值,这样做有必要吗?如果只用 4 会有什么 问题? 2. 记住 4.0 是一个“浮点数”,自己研究一下这是什么意思。 3. 在每一个变量赋值的上一行加上一行注解。 4. 记住 = 的名字是等于(equal),它的作用是为东西取名。 5. 记住 _ 是下划线字符(underscore)。 6. 将 python 作为计算器运行起来,就跟以前一样,不过这一次在计算过程中使用变量名来做计 算,常见的变量名有 i, x, j 等等。 常见问题回答 = 和 == 有什么不同? = (single-equal) 的作用是将右边的值赋予左边的变量名。`==` (double-equal) 的作用是检查左右 离岸边是否相等。习题 27 中你会学到 == 的用法。 写成 x=100 而非 x = 100 也没关系吧? 是可以这样写,但这种写法不好。操作符两边加上空格会让代码更容易阅读。 print 时词语间的空格有没有办法不让打印出来? 你可以通过这样的方法实现: print "Hey %s there." % "you",后面马上就会讲到。 怎样倒着读代码? 很简单,假如说你的代码有 16 行,你就从第 16 行开始,和我的第 16 行比对,接着比对第 15 行,以此类推,直到全部检查完。 为什么 space 用了`4.0`? 这个主要就是为了让你见识一下浮点数,并且提出这个问题。看看加分习题吧。 习题 5: 更多的变量和打印 我们现在要键入更多的变量并且把它们打印出来。这次我们将使用一个叫“格式化字符串(format string)”的东西. 每一次你使用 " 把一些文本引用起来,你就建立了一个字符串。字符串是程序将信息展 示给人的方式。你可以打印它们,可以将它们写入文件,还可以将它们发送给网站服务器,很

编辑推荐

  • 名称/格式
  • 评分
  • 下载次数
  • 资料大小
  • 上传时间

用户评论

0/200
    暂无评论
上传我的资料

相关资料

资料评价:

/ 162
所需积分:1 立即下载
返回
顶部
举报
资料
关闭

温馨提示

感谢您对爱问共享资料的支持,精彩活动将尽快为您呈现,敬请期待!