“笨办法”学Python 3(txt+pdf+epub+mobi电子书下载)


发布时间:2021-05-17 19:26:57

点击下载

作者:(美)泽德 A. 肖(Zed A. Shaw)

出版社:人民邮电出版社有限公司

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

“笨办法”学Python 3

“笨办法”学Python 3试读:

前言

中已经做了详细说明,你看下一页就知道了。

随书的视频也很有趣。也许你会觉得编程是一门很高深的手艺,程序员个个脑袋灵光得很。但是在视频里,你会看到作者被一些简单的错误卡住,半天才找出头绪,其实这才是程序员的日常状态。

总之,现在编程很火,编程语言中Python很流行,Python入门书中这本很有趣。怎么样,试试?致谢

在翻译这本书前几版的过程中收到过大量热心网友的问题反馈和改进建议。人民邮电出版社勤劳而又专业的编辑们审稿和校对让这本书的文字更加专业。在此一并致谢。译者简介

王巍巍是一名受软件和编程的吸引,中途转行上岗的软件从业人员。写代码和翻译是他的两大爱好,此外他还喜欢在网上撰写和翻译一些不着边际的话题和文章。如果读者对书中的内容有疑问,或者发现了书中的错误,再或者只是想随便聊聊,请通过电子邮件(wangweiwei@outlook.com)与他联系。前言

这本书的目的是让你起步编程。虽然书名说是用“Hard Way”(笨办法)学习写程序,但其实并非如此。所谓的“笨办法”指的是本书的教学方式,也就是所谓的“指令式”教学。在这个过程中,我会让你完成一系列习题,而你则通过反复练习来学到技能,这些习题也是专为反复练习而设计的。对于一无所知的初学者来说,在能理解更复杂的话题之前,这种教授方式效果是很好的。你可以在各种场合看到这种教授方式,从武术到音乐不一而足,甚至在学习基本的算术和阅读技能时也会看到这种教学方式。

本书通过练习和记忆的方式,指导你逐渐掌握使用Python编程的技能,然后由浅入深,让你将这些技能应用到各种问题上。读完本书之后,你将有能力接触学习复杂的编程主题所需的工具。我喜欢告诉别人:我的这本书能给你一个“编程黑带”。意思就是说,你已经打好了基础,可以真正开始学习编程了。

如果你肯努力,并投入一些时间,掌握了这些技能,你将学会如何编写代码。针对Python 3的改进

本书使用了Python 3.6。我用Python的这个版本是因为它包含了一个新的改进版的字符串格式化系统,这个系统比之前的更为易用。初学者接触Python 3.6可能会遇到一些问题,但我在书里会帮你克服。Python 3.6的一个特别令人头疼的问题是,在一些关键位置的出错消息都很糟糕,不过这些我都会帮你弄懂的。

我还根据自己过去5年的教学经验,改进了视频教程。以前的视频中,你只是看我做习题,在新版视频里,你还可以看到我如何破坏每个习题中的程序,以及如何修复它们。这种技术称为“调试”(debugging)。从中你可以学到如何解决问题,也能对Python运行你创建的程序的原理有一个概念,从而提高你解决问题的能力。你还会学到很多有用的调试技巧。

最后要讲的是,Python 3版本完全支持Windows 10。过去的版本偏重于Unix风格的操作系统,如macOS和Linux,Windows只是顺便讲讲。在我写这本书的时候,微软公司已经开始认真对待开源工具和开发者了,而且Windows也是一个严肃的Python开发平台。在视频中,很多场合下我用Windows进行了演示,为了完全兼容,我也演示了macOS和Linux。我讲了每个平台都会遇到的一些坑,演示了安装过程,还提供了不少别的小窍门。笨办法更简单

在本书的帮助下,你将通过完成下面这些非常简单的事情来学会一门编程语言,这也是每个程序员的必经之路。

1.从头到尾完成每一个习题。

2.一字不差地录入每一段程序。

3.让程序运行起来。

就是这样了。刚开始这对你来说会非常难,但你需要坚持下去。如果你通读本书,每晚花一两个小时做做习题,你可以为自己读下一本编程书打下良好的基础。这本书可能无法让你一夜之间成为一名程序员,但它将会让你踏上学习编程方法的道路。

本书的目的是教会你编程新手需要了解的3种重要的技能:读和写、注重细节以及发现不同。读和写

很显然,如果你连打字都成问题的话,那你学习编程也会有问题。尤其是,如果你连程序源代码中的那些奇怪字符都敲不出来的话,就更别提编程了。如果没有这些基本技能,你连最基本的软件工作原理都难以学会。

手动录入代码样例并让它们运行起来的过程,会让你学会各种符号的名称,熟悉它们的录入,最终读懂编程语言。注重细节

区分好程序员和差程序员的最重要的一个方面就是对细节的重视程度。事实上,这是任何行业区分好坏的标准。如果缺乏对工作中每一个微小细节的注意,你的工作成果将不可避免地出现各种关键缺陷。从编程这一行来讲,你得到的结果将会是毛病多多而且难以使用的软件。

通读本书并一字不差地录入书中的每个例子,会训练你在做某件事时把精力集中到自己正在做的事情的细节上。发现不同

大多数程序员长年累月地工作会培养出一种重要的技能,那就是观察事物间不同点的能力。有经验的程序员拿着两段仅有细微不同的代码,可以立即指出里边的不同点来。程序员甚至发明工具来让这件事更加容易,不过我们不会用这些工具。你要先用笨办法训练自己,然后再使用这些工具。

在做这些习题并且录入每段代码的时候,你一定会犯错,这是不可避免的,即使有经验的程序员也会偶尔出错。你的任务是把自己写的东西和正确答案对比,把所有的不同点都修正过来。这样的过程可以让你对程序里的错误、bug以及其他问题更加敏感。少瞅多问

只要是写代码,就会写出“bug”(虫子)来。“bug”是你写的代码中的缺陷、错误或者问题。据说早年有一次有人的计算机工作异常,检查后发现是一只蛾子飞到计算机里导致的,于是后来人们就把计算机的问题称为bug了。要修复计算机的问题,就需要对它进行“除虫”,这也是调试(debug)一词的来历。在软件的世界里,bug简直不计其数,真的是太多了。

和那只蛾子一样,你的bug会藏在代码中,而你需要把它们找出来。别以为盯着屏幕上的代码看,“虫子”就会自己爬出来了,你需要更多信息才能找到它们,你需要站起来,挽起袖子找“虫子”。

要找“虫子”,你需要拷问你的代码,问它究竟发生了什么,或者你需要站在不同的角度去看代码。在本书里我多次提到“少瞅多问”,我演示了如何让代码“坦白交代”自己干了什么,如何把拷问的结果变成解决问题的方案。我还演示了各种不同的理解代码的方式,从而让你获得更多信息和洞察力。不要复制粘贴

你必须手动将每个习题录进去,复制粘贴会让这些习题变得毫无意义。这些习题的目的是训练你的双手和大脑思维,让你有能力读代码、写代码和观察代码。如果你复制粘贴的话,就是在欺骗自己,而且这些习题的效果也会大打折扣。使用视频教程

本书附带的视频解释了代码的工作原理,以及(更重要的)破坏代码的方法。视频中我会故意破坏代码,再展示修复代码的方法,通过这样的方式,我演示了很多常见错误。我还使用了调试和拷问的手段讲解代码。视频里演示了“少瞅多问”的思路。关于坚持练习的一点提示

你通过本书学习编程时,我正在学习弹吉他。我每天至少训练2小时,至少花1小时练习音阶、和弦、琶音,剩下的时间用来学习音乐理论和乐曲演奏、训练听力等。有时我一天会花8小时来学习吉他和音乐,因为我觉得这是一件有趣的事情。对我来说,要学习一样东西,最自然、最根本的方法就是反复地练习。我知道,要学好一种技能,每日的练习是必不可少的,就算哪天的练习没啥进展(对我来说是常事),或者说学习内容实在太难,你也不必介意。只要坚持尝试,总有一天困难会变得容易,枯燥也会变得有趣。

在我写《“笨办法”学Python》和《“笨办法”学Ruby》这两本书之间的那段时间,我对绘画产生了兴趣。在39岁的时候喜欢上了视觉艺术,然后就跟以前学吉他、音乐、编程的时候一样,每天学绘画。我搜集了诸多入门教材,照着书上的去做,每天都画一些东西,并且享受着学习的过程。我离“艺术家”还差得很远,甚至连“画得好”都谈不上,不过现在我可以说我是“会画画”的了。在学习艺术的过程中,我用的就是本书教你编程的方法。只要将问题拆分成小的练习和课程,你就可以学会任何东西。只要集中精力慢慢提高,享受学习的过程,不管你最终学到什么程度,你都会从中获益的。

通过本书学习编程的过程中要记住一点,就是所谓的“万事开头难”,对于有价值的事情尤其如此。也许你是一个害怕失败的人,一遇到困难就想放弃;也许你一直没学会自律,一遇到“无聊”的事情就不想上手;也许因为有人夸你“有天分”而让你自视甚高,不愿意做这些看上去很笨拙的事情,怕有负你“天才”的称号;也许你太过激进,把自己跟像我这样有20多年经验的编程老手相比,让自己失去了信心。

不管是什么原因,你一定要坚持下去。如果遇到做不出来的巩固练习,或者遇到一个看不懂的习题,你可以暂时跳过去,过一阵子回来再看。编程中有一件经常发生的怪事就是,一开始你什么都不懂,这会让你感觉很不舒服,就像学习人类的自然语言一样,你会发现很难记住一些词语和特殊符号的用法,而且会经常感到很迷茫,直到有一天,忽然一下子你就豁然开朗,以前不明白的东西忽然就明白了。如果你坚持完成并努力理解这些习题,你最终会学会这些东西的。也许你不会成为一位编程大师,但你至少会明白编程的原理。

如果你放弃的话,你会失去达到这个程度的机会。如果你坚持尝试,坚持录入习题,坚持弄懂习题的话,你最终一定会明白里边的内容的。如果你通读了本书,却还是不懂怎样写代码,你的努力也不会白费。你可以说你已经尽力了,虽然成效不佳,至少你尝试过了,这也是一件值得骄傲的事情。致谢

首先我要感谢在本书前两版中帮过我的Angela,没有她的话我有可能就不会费工夫完成这两本书了。她帮我修订了第1版初稿,而且在我写书的过程中给了我极大的支持。

我还要感谢Greg Newman为前两版做了封面设计,感谢Brian Shumate在早期网站设计方面的帮助,同时感谢所有读过前两版并且提出反馈和纠正错误的读者。

谢谢你们。资源与支持

本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。配套资源

本书提供免费的配套视频。要观看配套视频,读者直接扫描每个习题首页标题旁的二维码即可。提交勘误

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,点击“提交勘误”,输入勘误信息,点击“提交”按钮即可。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。与我们联系

我们的联系邮箱是contact@epubit.com.cn。

如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线提交投稿(直接访问www.epubit.com/selfpublish/submission即可)。

如果您是学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。关于异步社区和异步图书“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT技术图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT技术图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社近30年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。异步社区微信服务号习题0 准备工作

这个习题并没有代码,它的主要目的是让你在计算机上安装好 Python。你应该尽量照着说明进行操作,如果你不太能跟上书面教程,就去看看为你的平台准备的视频。注意 如果你不知道怎样使用Windows下的PowerShell,或者macOS下的Terminal(终端),或者Linux下的bash,那你就需要先学会一个。在继续下面的习题之前,你应该先完成附录中的练习。macOS

完成这个习题你需要完成下列任务。

1.到https://www.python.org/downloads/release/python-360/下载“Mac OS X 64-bit/32-bit installer”。安装过程和安装别的软件一样。

2.用浏览器打开https://atom.io/,找到并安装Atom文本编辑器。如果你觉得Atom不合适,那就看看本习题最后的“可选文本编辑器”部分。

3.把Atom(文本编辑器)放到Dock中,这样你可以方便地找到它。

4.找到系统中的Terminal程序。到处找找,你会找到的。

5.把Terminal也放到Dock里面。

6.运行Terminal程序,这个程序没什么好看的。

7.在Terminal里运行python3.6。运行的方法是键入命令的名字再敲一下回车键。

8.键入quit()后按回车键,退出python3.6。

9.这样你就应该退回到键入python3.6前的提示界面了。如果没有的话,自己研究一下为什么。

10.学着在Terminal上创建一个目录。

11.学着在Terminal上变到一个目录。

12.使用编辑器在你进入的目录下创建一个文件。新建一个文件,使用“保存”(Save)或者“另存为”(Save As...)选项,然后选择这个目录。

13.使用键盘切换回Terminal窗口。

14.回到Terminal,用ls命令列出目录来看你新建的文件。macOS:应该看到的结果

下面是我在自己计算机的Terminal中完成上述步骤时看到的内容,和你看到的结果可能会有一些不同,但应该是相似的。$ python3.6Python 3.6.0 (default, Feb 2 2017, 12:48:29)[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang−700.1.81)] on darwinType "help", "copyright", "credits" or "license" for more information.>>>~ $ mkdir lpthw~ $ cd lpthwlpthw $ ls# ... 使用文本编辑器来编辑test.txt文件 ...lpthw $ lstest.txtlpthw $Windows

1.用浏览器打开 https://atom.io,下载并安装Atom文本编辑器。这个操作无须管理员权限。

2.把Atom放到桌面或者快速启动栏,这样就可以方便地访问它了。这两条在安装选项中可以看到。如果你的计算机速度不够快,无法运行Atom,就去看看本习题结尾的“可选文本编辑器”部分。

3.从开始菜单运行PowerShell。你可以使用开始菜单的搜索功能,键入名称后敲回车键即可运行。

4.为它创建一个快捷方式,放到桌面或者快速启动栏中以方便使用。

5.运行PowerShell程序(后面我会叫它终端),这个程序没什么好看的。

6.到https://www.python.org/downloads/release/python-360/下载并安装Python 3.6。记得勾选“Add Python 3.6 to PATH”,将Python 3.6添加到系统路径。

7.在PowerShell终端中运行python。运行的方法是键入命令的名字再敲一下回车键。如果没有运行起来,那你需要重新安装Python,安装时记得勾选“Add Python 3.6 to PATH”选项。字比较小,要仔细看。

8.键入quit()后按回车键,退出python。

9.这样你就应该退回到敲python前的提示界面了。如果没有的话,自己研究一下为什么。

10.学着在PowerShell上创建一个目录。

11.学着在PowerShell上变到一个目录。

12.使用编辑器在你进入的目录下创建一个文件。新建一个文件,使用“保存”或者“另存为”选项,然后选择这个目录。

13.使用键盘切换回PowerShell窗口。

14.回到PowerShell,列出目录来看你新建的文件。

从现在开始,如果我提到终端(terminal)或者shell,我指的就是PowerShell。要运行Python 3.6,只要执行python命令即可。Windows:应该看到的结果> python>>> quit()> mkdir lpthw> cd lpthw... 使用文本编辑器来编辑test.txt文件 ...>> dirVolume in drive C isVolume Serial Number is 085C−7E02Directory of C:\Documents and Settings\you\lpthw04.05.2010 23:32

.04.05.2010 23:32 ..04.05.2010 23:32 6 test.txt 1 File(s) 6 bytes 2 Dir(s) 14 804 623 360 bytes free>

你看到的内容不一样也没关系,大体相似就可以了。Linux

Linux系统可谓五花八门,安装软件的方式也各有不同。既然你是Linux用户,我就假设你已经知道如何安装软件包了,下面是操作说明。

1.使用你的Linux包管理器安装Python 3.6。如果不能安装,就去https://www.python.org/ downloads/release/python-360/下载源代码并进行构建。

2.使用你的Linux包管理器安装Atom文本编辑器。如果你觉得Atom不合适,那就看看本习题最后的“可选文本编辑器”部分。

3.把Atom(文本编辑器)放到窗口管理器显见的位置,以方便日后使用。

4.找到Terminal程序。它的名字可能是GNOME Terminal、Konsole或者xterm。

5.把Terminal也放到你的Dock里面。

6.运行Terminal程序,这个程序没什么好看的。

7.在Terminal程序中运行python3.6。运行的方法是键入命令的名字再敲一下回车键。如果没有python3.6命令,那就试试只键入python。

8.键入quit()后按回车键,退出python。

9.这样你就应该退回到敲python前的提示界面了。如果没有的话,自己研究一下为什么。

10.学着在Terminal上创建一个目录。

11.学着在Terminal上变到一个目录。

12.使用你的编辑器在你进入的目录下创建一个文件。典型步骤是,新建一个文件,使用“保存”或者“另存为”选项,然后选择这个目录。

13.使用键盘切换回Terminal窗口,如果不知道怎样使用键盘切换,你可以自己查一下。

14.回到Terminal,列出目录来看你新建的文件。Linux:应该看到的结果$ python>>> quit()$ mkdir lpthw$ cd lpthw# ... 使用文本编辑器来编辑test.txt文件...$ lstest.txt$

你看到的内容不一样也没关系,大体相似就可以了。网上搜索

本书最主要的一部分内容是学会在网上研究编程主题。我会告诉你让你“在网上搜一下这个”,你的任务就是用搜索引擎寻求答案。我让你搜索而不是直接告诉你答案的原因是,我想让你成为一个具有独立学习能力的人,这样当你学会后就不需要回来看这本书了。如果你能在网上找到你的问题的答案,那么你就离独立学习更近了一步,这也是我的目标。

多亏了Google之类的搜索引擎,你可以很容易找到我要你找的答案。如果我说让你“上网搜索一下python的列表函数”,你只要像下面这样做就可以了。

1.访问google官方网站。

2.键入“python 3 列表 函数”。

3.阅读列出的网页,找到最佳答案。给新手的告诫

你已经完成了这个习题。根据你对计算机的熟悉程度,这个习题对你而言可能会有些难。如果你觉得有难度的话,你要自己克服困难,多花点儿时间去读书研究,因为只有你会这些基础操作,编程对你来说才不会太难学。

如果有人让你中途停止或者跳过本书的某些习题,你应该就当没听到。任何企图不让你学到某些东西的人,或者更恶劣的,企图让你通过他们而非通过自己努力获取知识的人,都是企图让你依赖他们来获取知识。别听他们的,好好做你的习题,这样你就能学会如何自学了。

总有一天你会听到有程序员建议你使用macOS或者Linux。如果他喜欢字体美观,他会告诉你弄一台Mac计算机,如果他们喜欢操控而且留了一脸大胡子,他会让你安装Linux。这里再次向你说明,只要是一台手上能用的计算机就可以了。你需要的只有3样东西:一个文本编辑器,一个命令行终端,还有Python。

最后要说的是,这个习题的准备工作的目的就是让你可以在以后的习题中顺利地做到下面几件事。

1.撰写习题的代码。

2.运行你写的习题代码。

3.代码被破坏的时候修正代码。

4.重复上述步骤。

其他的事情只会让你更困惑,所以还是坚持按计划进行吧。可选文本编辑器

文本编辑器对程序员很重要,但初学者只要使用简单的程序员的文本编辑器就可以了。这些编辑器和写文章用的编辑器不一样,它们为写代码提供了很多专门的功能。我在书中推荐了Atom,因为它是免费的,而且几乎可以在所有平台上使用。不过,也许Atom在你计算机上不好用,那你可以试试下面这些编辑器。编辑器名称支 持 平 台Visual Studio CodeWindows, macOS, LinuxNotepad++WindowsgEditLinux, macOS, WindowsTextmatemacOSSciTEWindows, LinuxjEditLinux, macOS, Windows

这些编辑器是按项目“健康程度”排列的。也许其中一些项目将来会被开发者抛弃而死掉,或者哪天就不支持你的计算机了。如果你试了一个,发现不工作,那就试试另一个。“支持平台”中有的列了多项,也是按支持的成熟度排列的,所以如果你用Windows,那就看看“支持平台”一列中Windows排在最前面的编辑器。

如果你会用Vim或者Emacs,那就用它们。如果你从来没用过,就避开它们。也许会有程序员劝你使用Vim或者Emacs,但这只会让你偏离轨道。你的目标是学习Python,而不是学习Vim或者Emacs。如果你试了Vim,发现没法退出,就键入:q!或者ZZ。如果有人让你用Vim,但连这都没告诉你,你现在应该知道为什么他们的话不能听了。

学习本书过程中不要使用集成开发环境(IDE)。依赖IDE的结果就是没法使用新的编程语言,因为你要等着企业卖给你一个支持这门语言的IDE,但除非已经有了众多人在使用这门语言,否则企业是不会为它开发IDE的。如果你有信心使用Vim、Emacs、Atom之类的程序员的文本编辑器写代码,那你就不必等待第三方推出IDE了。尽管有些场合下IDE也不错,比如针对已有的庞大代码库,但如果用IDE上了瘾,你的个人前途就会受限。

另外你也不应该使用IDLE。它功能极其有限,而且作为软件本身质量也不太好。你只需要一个简单的文本编辑器、一个命令行终端和一个Python就够了。习题1 第一个程序

你应该在习题0上花了不少的时间,学会了如何安装和运行文本编辑器,以及如何运行终端。如果你还没有完成这些练习,请不要继续往下进行,否则后面的学习过程会很痛苦。下面这个警告你不要跳过前面内容的警示,本书中仅此一次,切记切记。警告如果你跳过了习题0,那你就没做对。是不是想使用IDLE或者别的IDE?我在习题0里说了不许用,你得听我的才行。如果你跳过了习题0,那就回去看一遍。

将下面的内容录到一个取名为ex1.py的文件中。这种命名方式很重要,Python文件最好以.py结尾。

ex1.py1 print("Hello World!")2 print("Hello Again")3 print("I like typing this.")4 print("This is fun.")5 print('Yay! Printing.')6 print("I'd much rather you 'not'.")7 print('I "said" do not touch this.')

Atom文本编辑器的代码看上去差不多是图1-1中这样子的,各个平台应该都一样。

别担心编辑器长得是不是一样,只要接近就可以了。也许你的窗口标题栏不太一样,也许颜色不同,你的Atom窗口右边不会显示“zedshaw”而是显示了你保存文件的目录名称。这些不同都没关系。

创建这个文件时记住下面几点。

1.注意我没有键入左边的行号。这些是额外加到书里边的,以便对代码具体的某一行进行讨论。例如“参见第5行……”你无需将这些行号也录到Python脚本中去。

2.注意截图中开始的print语句,它和ex1.py代码范例中是完全一样的。这里要求你做到“完全一样”的意思是一字不差,仅做到“差不多一样”是不够的。要让这段脚本正常工作,代码中的每个字符都必须完全匹配。当然,你的编辑器显示的颜色可能不一样,这并不重要,只有你键入的字符才是重要的。图1-1

在macOS或者Linux终端通过键入以下内容来运行这段代码:python3.6 ex1.py

而在Windows上键入py``tho``n就可以了,如下所示:python ex1.py

如果都对了,你应该能看到我在“应该看到的结果”部分给出的内容。如果不一样,一定是你做错了什么,计算机是不会出错的。应该看到的结果

在macOS的Terminal下应该看到图1-2所示的这个样子。

在Windows的PowerShell下应该看到图1-3所示的这个样子。图1-2图1-3

你也许会看到python``3.6`` ex1.py命令前面显示的用户名、计算机名及其他一些信息不一样,这不是问题,重要的是你键入了这条命令,而且看到了相同的输出。

如果有错误,你会看到与下面类似的出错消息:$ python3.6 python/ex1.py File "python/ex1.py", line 3 print("I like typing this. ^SyntaxError: EOL while scanning string literal

你应该学会看懂这些内容,这是很重要的一点,因为你以后还会犯类似的错误。就是现在的我也会犯这样的错误。让我们一行一行来看。

1.首先我们在终端键入命令来运行ex1.py脚本。

2.Python告诉我们ex1.py文件的第3行有一个错误。

3.然后这一行代码被显示出来。

4.然后Python显示一个插入符(^)符号,用来指示出错的位置。注意到少了一个双引号(")了吗?

5.最后,它显示一个SyntaxError(语法错误),告诉你究竟是什么样的错误。通常这些出错消息都非常难懂,不过你可以把出错消息的内容复制到搜索引擎里,然后你就能看到别人也遇到过这样的错误,而且你也许能找到修正这个错误的方法。巩固练习

巩固练习里边的内容是供你尝试的。如果你觉得做不出来,可以暂时跳过,过段时间再回来做。

对于这个习题,试试下面几项。

1.让你的脚本再多打印一行。

2.让你的脚本只打印其中一行。

3.在一行的起始位置放一个“#”字符。它的作用是什么,自己研究一下。

从现在开始,除非特别情况,否则我将不再解释每个习题的工作原理了。警告#(octothorpe)有很多的英文名字,如pound(英镑符)、hash(电话的#键)、mesh(网)等。选一个你觉得酷的用就行了。常见问题回答

这部分包含了学生做这个习题时遇到的真实问题。我可不可以使用IDLE?

不行。你应该使用macOS的Terminal或者Windows的PowerShell,和我这里演示的一样。如果你不知道如何用它们,可以去阅读附录。怎样让编辑器显示不同颜色?

编辑之前先将文件保存为.py格式,如ex1.py,后面编辑时你就可以看到各种颜色了。运行ex1.py时看到SyntaxError: invalid syntax。

你也许已经运行了Python,然后又在Python环境下运行了一遍Python。关掉并重启终端,重来一遍,只键入python3.6 ex1.py就可以了。遇到出错消息can’t open file 'ex1.py': [Errno 2] No such file or directory。

你需要在自己创建文件的目录下运行命令。确保你事先使用cd命令进入了这层目录下。假如你的文件保存在lpthw/ex1.py下面,那你需要先执行cd lpthw/,再运行python3.6 ex1.py。如果你不明白该命令的意思,那就去看看附录。我的文件无法运行,它直接回到了提示符,没有任何输出。

很有可能是你把ex1.py文件中的代码做了字面理解,认为print("Hello World!")就是让你在文件中打印"Hello World!",于是你没有键入print。你的代码应该和我的一模一样才可以。习题2 注释和#号

程序里的注释是很重要的。它们可以用自然语言告诉你某段代码的功能是什么。想要临时移除一段代码时,你还可以用注释的方式临时禁用这段代码。这个习题就是让你学会如何在Python中使用注释。

ex2.py 1 # A comment, this is so you can read your program later. 2 # Anything after the # is ignored by python. 3 4 print("I could have code like this.") # and the comment after is ignored 5 6 # You can also use a comment to "disable" or comment out code: 7 # print("This won't run.") 8 9 print("This will run.")

从现在开始,我将用这样的方式来演示代码。我一直在强调“完全一样”,不过你也不必按照字面意思理解。你的程序在屏幕上的显示可能会有些不同,重要的是你在文本编辑器中录入的文本的正确性。事实上,我可以用任何编辑器写出这段程序,而且内容是完全一样的。应该看到的结果

习题2 会话$ python3.6 ex2.py I could have code like this.This will run.

再说明一次,我不会再贴各种屏幕截图了。你应该明白上面的内容不是输出内容的字面翻译,而$ python3.6 ...下面的内容才是你应该关心的。巩固练习

1.弄清楚#字符的作用,而且记住它的名字(英文为octothorpe或者pound character)。

2.打开ex2.py文件,从后往前逐行检查。从最后一行开始,倒着逐个单词检查回去。

3.有没有发现什么错误呢?有的话就改正过来。

4.朗读你录入的代码,把每个字符都读出来。有没有发现更多的错误呢?有的话也一样改正过来。常见问题回答你确定#字符的名称是pound character?

我叫它octothorpe,这个名字没有哪个国家用作别的意思,而且所有的人都能看懂它的意思。每个国家都觉得他们的叫法最正确、最闪亮。对我来说这是自大狂的想法,而且说真的,与其去关心这种细枝末节,还不如把时间花在更重要的事情上面,比如好好学习编程。为什么print("Hi # there.")里的#没被忽略掉?

这行代码里的#处于字符串内部,所以它就是引号结束前的字符串中的一部分,这时它只是一个普通字符,而不代表注释的意思。怎样做多行注释?

每行前面放一个#就可以了。我们国家的键盘上找不到#字符,怎么办?

有的国家要通过Alt键组合才能键入这个字符。你可以用搜索引擎找一下解决方案。为什么要让我倒着阅读代码?

这样可以避免让你的大脑跟着每一段代码的意思走,这样可以让你精确处理每个片段,从而让你更容易发现代码中的错误。这是一个很好用的查错技巧。习题3 数字和数学计算

每一种编程语言都包含处理数字和进行数学计算的方法。不必担心,程序员经常谎称他们是多么牛的数学天才,其实他们根本不是。如果他们真是数学天才,他们就会去从事数学相关的工作,而不是写一些毛病百出的Web框架,想着赚够钱买辆跑车了。

这个习题里有很多数学运算符号。我们来看一遍它们都叫什么名字,你要一边写一边念出它们的名字来,直到你念烦了为止。名字如下。● +:加号。● −:减号。● /:斜杠。● *:星号。● %:百分号。● <:小于号。● >:大于号。● <=:小于等于号。● >=:大于等于号。

有没有注意到以上只是些符号,没有给出具体的运算操作呢?录完下面的习题代码后,再回到上面的列表,写出每个符号的作用。例如,+是用来做加法运算的。

ex3.py 1 print("I will now count my chickens:") 2 3 print("Hens", 25 + 30 / 6) 4 print("Roosters", 100 - 25 * 3 % 4) 5 6 print("Now I will count the eggs:") 7 8 print(3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6) 9 10 print("Is it true that 3 + 2 < 5 - 7?")11 12 print(3 + 2 < 5 - 7)13 14 print("What is 3 + 2?", 3 + 2)15 print("What is 5 - 7?", 5 - 7)16 17 print("Oh, that's why it's False.")18 19 print("How about some more.")20 21 print("Is it greater?", 5 > -2)22 print("Is it greater or equal?", 5 >= -2)23 print("Is it less or equal?", 5 <= -2)应该看到的结果

习题3 会话$ python3.6 ex3.pyI will now count my chickens: Hens 30.0Roosters 97Now I will count the eggs:6.75Is it true that 3 + 2 < 5 - 7?FalseWhat is 3 + 2? 5What is 5 - 7? -2Oh, that's why it's False.How about some more.Is it greater? TrueIs it greater or equal? TrueIs it less or equal? False巩固练习

1.每一行的上面使用#为自己写一个注释,说明一下这一行的作用。

2.记得习题0吧?用里边的方法运行Python,然后使用刚才学到的数学运算符,把Python当作计算器玩玩儿。

3.自己找个想要计算的东西,写一个.py文件把它计算出来。

4.使用浮点数重写一遍ex3.py,让它的计算结果更准确。提示:20.0就是一个浮点数。常见问题回答为什么%是求余数符号,而不是百分号?

很大程度上只是因为设计人员选择了这个符号而已。正常写作时它是百分号没错,在编程中除法我们用了/,而求余数又恰恰选择了%这个符号,仅此而已。%是怎么工作的?

换个说法就是“X除以Y的余数是J”,例如“100除以16的余数是4”。%运算的结果就是J这部分。运算优先级是怎样的?

在美国,我们用PEMDAS这个简称来辅助记忆,它的意思是“括号(Parentheses)、指数(Exponents)、乘(Multiplication)、除(Division)、加(Addition)、减(Subtraction)”,这也是Python里的运算优先级。一个常见的错误是人们以为PEMDAS是一个绝对次序,需要依次进行,其实乘除是一级,从左到右,然后加减是一级,从左到右,所以你可以把PEMDAS写成PE(M&D)(A&S)。习题4 变量和命名

你已经学会了print和算术运算。下一步要学的是“变量”(variable)。在编程中,变量只不过是用来指代某个东西的名字。程序员通过使用变量名可以让自己的程序读起来更像自然语言。而且因为程序员的记性都不怎么好,变量名可以让他们更容易记住程序的内容。如果他们没有在写程序时使用好的变量名,在下一次读到原来写的代码时他们会大为头疼。

如果被这个习题难住了的话,想想之前教过的,要注意找到不同点、关注细节。

1.在每一行的上面写一条注释,给自己解释一下这一行的作用。

2.倒着读你的.py文件。

3.朗读你的.py文件,将每个字符都读出来。

ex4.py 1 cars = 100 2 space_in_a_car = 4.0 3 drivers = 30 4 passengers = 90 5 cars_not_driven = cars - drivers 6 cars_driven = drivers 7 carpool_capacity = cars_driven * space_in_a_car 8 average_passengers_per_car = passengers / cars_driven 9 10 11 print("There are", cars, "cars available.")12 print("There are only", drivers, "drivers available.")13 print("There will be", cars_not_driven, "empty cars today.")14 print("We can transport", carpool_capacity, "people today.")15 print("We have", passengers, "to carpool today.")16 print("We need to put about", average_passengers_per_car, "in each car.")警告space_in_a_car中的_是下划线(underscore)字符。如果你不知道怎样键入这个字符的话就自己研究一下。这个字符在变量里通常被用作假想的空格,用来隔开单词。应该看到的结果

习题4 会话$ python3.6 ex4.pyThere 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.0 in each car.巩固练习

刚开始写这个程序时我犯了个错误,Python告诉我这样的出错消息:Traceback (most recent call last): File "ex4.py", line 8, in average_passengers_per_car = car_pool_capacity / passengerNameError: name 'car_pool_capacity' is not defined

用你自己的话解释一下这个出错消息,解释时记得使用行号,而且要说明原因。

下面是更多的巩固练习。

1.我在程序里用了4.0作为space_in_a_car的值,这样做有必要吗?如果只用4会发生什么?

2.记住4.0是一个“浮点数”。这只是一个带小数点的数,如果写作4.0而不是4,那它就是一个浮点数。

3.在每一个变量赋值的上一行加上一条注释。

4.记住=的名字是等于,它的作用是为数据(数值、字符串等)取名(cars_driven、passengers)。

5.记住_是下划线字符。

6.将Python作为计算器运行起来,就跟以前一样,不过这一次在计算过程中使用变量名来做计算,常见的变量名有i、x、j等。常见问题回答=(单等号)和==(双等号)有什么不同?

=的作用是将右边的值赋给左边的变量名。==的作用是检查左右两边的值是否相等。习题27中你会学到更多相关用法。写成x=100而非x = 100也没关系吧?

是可以这样写,但这种写法不好。操作符两边加上空格会让代码更容易阅读。怎样“倒着读”代码?

很简单,假如说你的代码有16行,你就从第16行开始,和我的文件的第16行比对,接着比对第15行,依此类推,直到全部检查完。为什么space_in_a_car用了4.0?

这主要就是为了让你见识一下浮点数,并且提出这个问题。看看巩固练习吧。习题5 更多的变量和打印

我们现在要键入更多的变量并且把它们打印出来。这次我们将使用一个叫“格式化字符串”(format string)的东西。每一次你使用双引号(")把一些文本括起来,就创建了一个字符串。字符串是程序向人展示信息的方式。你可以打印它们,可以将它们存入文件,还可以将它们发送给Web服务器,很多事情都是通过字符串交流实现的。

字符串是非常好用的东西,所以在这个习题中你将学会如何创建嵌入变量内容的字符串。要在字符串里嵌入变量,你需要使用{}特殊符号,把变量放在里边。你的字符串还必须以f开头,f是“格式化”(format)的意思,例如f"Hello {somevar}"。这种f、引号和{}的组合相当于告诉Python:“嘿,这是一个格式化字符串,把这些变量放到那几个位置。”

和之前一样,即使你读不懂这些内容,只要一字不差地录入就可以了。

ex5.py 1 my_name = 'Zed A. Shaw' 2 my_age = 35 # not a lie 3 my_height = 74 # inches 4 my_weight = 180 # lbs 5 my_eyes = 'Blue' 6 my_teeth = 'White' 7 my_hair = 'Brown' 8 9 print(f"Let's talk about {my_name}.")10 print(f"He's {my_height} inches tall.")11 print(f"He's {my_weight} pounds heavy.")12 print("Actually that's not too heavy.")13 print(f"He's got {my_eyes} eyes and {my_hair} hair.")14 print(f"His teeth are usually {my_teeth} depending on the coffee.")15 16 # this line is tricky, try to get it exactly right17 total = my_age + my_height + my_weight18 print(f"If I add {my_age}, {my_height}, and {my_weight} I get {total}.")应该看到的结果

习题5 会话$ python3.6 ex5.pyLet's talk about Zed A. Shaw.He's 74 inches tall.He's 180 pounds heavy.Actually that's not too heavy.He's got Blue eyes and Brown hair.His teeth are usually White depending on the coffee.If I add 35, 74, and 180 I get 289.巩固练习

1.修改所有变量的名字,把它们前面的my_去掉。确认将每一个地方都改掉,不只是使用=设置的地方。

2.试着使用变量将英寸和磅转换成厘米和千克。不要直接键入答案,使用Python的数学计算功能来完成。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载