书名:趣学Python编程
ISBN:978-7-115-33595-1
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
Simplified Chinese-language edition copyright © 2013 by Posts and Telecom Press.
Copyright © 2013 by Jason R. Briggs. Title of English-language original: PYTHON FOR KIDS, ISBN-13: ISBN-13: 978-1-59327-407-8, published by No Starch Press.
All rights reserved.
本书中文简体字版由美国No Starch出版社授权人民邮电出版社出版。未经出版者书面许可,对本书任何部分不得以任何方式复制或抄袭。
版权所有,侵权必究。
Python是一款解释型、面向对象、动态数据类型的高级程序设计语言。Python语法简捷而清晰,具有丰富和强大的类库,因而在各种行业中得到广泛的应用。对于初学者来讲,Python是一款既容易学又相当有用的编程语言,国内外很多大学开设这款语言课程,将Python作为一门编程语言学习。
本书是一本轻松、快速掌握Python编程的入门读物。全书分为3部分,共18章。第1部分是第1章到第12章,介绍Python编程基础知识,包括Python的安装和配置、变量、字符串、列表、元组和字典、条件语句、循环语句函数和模块、类、内建函数和绘图,等等。第2部分是第13章和第14章,介绍如何用Python开发实例游戏弹球。第3部分包括第15章到第18章,介绍了火柴人实例游戏的开发过程。
本书语言轻松,通俗易懂,讲解由浅入深,力求将读者阅读和学习的难度降到最低。任何对计算机编程有兴趣的人或者首次接触编程的人,不论孩子还是成人,都可以通过阅读本书来学习Python编程。
Jason R. Briggs从8岁起就是一名程序员了,那时他在Radio Shack TRS-80上学习了BASIC语言。他作为开发人员和系统架构师写专业的软件,同时还是《Java开发者》杂志的撰稿编辑。他的文章曾经上过《JavaWorld》、《OnJava》以及《ONLamp》。这是他写的第一本书。
Jason的网站在:http://jasonrbriggs.com/,他的电子邮箱地址是:mail@jasonrbriggs.com。
Miran Lipovaca是《Learn You a Haskell for Great Good!》的作者。他喜欢拳击,会弹贝斯,而且还会画画。他对于舞动的简笔画小人还有数字71很入迷,当他走到自动门的前面时他总是假装是他用意念打开的门。
15岁的Josh Pollock刚从Nueva School毕业,他现在是旧金山Lick-Wilmerding高中的一年级新生。他第一次编程是在9岁时,用的是Scratch;上6年级时用TI-BASIC;7年级时改用Java和Python;8年级时用UnityScript。除了编程,他喜欢吹号,开发电脑游戏,他还喜欢教别人自然科学知识。
Maria Fernandez拥有应用语言学的研究生学位,在过去超过20年的时间里她一直对计算机和技术感兴趣。她在佐治亚州的地球村项目中教授年轻的难民英语,现在她住在加利福尼亚北部,在ETS(教育考试服务中心)工作。
这就像当你上台领奖时才发现,你把那张列着要感谢的人的列表落在另一条裤子里了——你肯定会漏掉一些人,但音乐已经响起,你马上就得下台了。
那么也就是说,下面是我需要感激的人的不完全列表,是他们帮助我把这本书变成现在这么好。
感谢No Starch团队,尤其是Bill Pollock,在编辑本书时大量地考虑了“孩子们会怎么想”。如果你写程序写久了,很容易忘记其中有些东西对于初学者来讲有多难,Bill对于那些被忽略的还有太复杂的部分提出了宝贵的意见。还要感谢出色的产品经理Serena Yang,希望给300多页书中的代码纠正颜色没让你扯掉太多头发。
我必须要对Miran Lipovaca说“非常谢谢”,插图棒极了。太棒了。如果是我自己画这些画,那可就糟了,幸运的话也许偶尔能画出四不像的东西来。它是个熊么?是只狗?不,等一等,是棵树吧?
感谢校阅者们。很抱歉你们的有些建议最后也没能实现。可能你是对的,只能怪我自己一根筋。尤其要感谢Josh的一些好建议和非常好的发现。还要向Maria道歉,我偶尔会把格式不好的代码发给她。
感谢我的妻子和女儿,我在这段时间花在计算机屏幕前的时间比平时还多,她们包容了我。
感谢我妈妈多年来不断地鼓励我。
最后,要谢谢我爸爸在20世纪70年代就给我买了一台计算机,并且让我想用就可以随时用。没有他,这些都不可能存在。
编写计算机程序是未来最重要的生存技能。
计算机软件在我们的生活中扮演的角色越来越重要,然而编写程序的技术却越来越难以掌握了。大胆地假想一下:在未来,社会的阶层划分也许不再是分为权贵与平民、富人与穷人、无产阶级与资产阶级,而是分为懂技术的人和不懂技术的人。
现代人的生活越来越离不开网络、手机,还有无处不在各式各样的智能设备,就连很多简单的电灯里都有一个小小的电脑芯片。赋予这些计算机硬件以生命的就是人们设计的软件。软件让火星上的漫游机器人自主地去探索,软件让朋友们在社区网络上分享快乐,那些让你欲罢不能的电脑游戏也是软件。
软件在半个多世纪的时间里,在人类的各种活动中所占的比例越来越高。新兴的人类活动,如电脑游戏、社区网络等自然不用说。电话在刚刚发明时当中本没有任何的软件,而现在从你的手机到电信的网络,全部都是以软件为主体构成的。就算是在传统行业中软件的比重也越来越高了,不妨看看你周围的银行、快递、商场、书店等等这些年来的变化就知道了。
然而使用软件呢?
同意现在的软件产品变得越来越容易使用的请举手!
我相信真的会举手的大多是孩子们。因为孩子们从来都喜欢新事物。绝大多数成年人都不会觉得作为电话来讲智能手机比从前容易用了。
那么制作软件呢?
我是在20世纪80年代,还在上小学的时候开始学习计算机编程的。那时的苹果电脑开机直接进入BASIC语言界面。那时的编程语言就是做事情的流水帐,虽然连26个英文字母都认不准,可也能很快学会做好多事情,甚至没过多久就写出了自己的第一个电脑游戏。
而在翻译这本书的过程中我发现,现在的孩子要学习计算机编程要复杂得多。你起码要先从Windows,苹果OS X或者Linux(Ubuntu)中选择一个操作系统,学习如何使用它。然后,如果你要使用Python语言的话一般还要先下载和安装。这是因为Windows中缺省没有安装Python,而苹果电脑和Linux上虽然有却不是最新版本。在每种操系统上安装的方式都不一样。装好了之后你还要知道如何打开,运行,然后还得选择一种编辑代码的工具。你在代码里创建了一个新的绘图窗口然后运行……“它在哪儿呢?”原来运行窗口藏在后面呢,你得用鼠标点它一下才能和它交互。“天啊!你不说我怎么知道!”代码也不再像是流水帐那么简单了,模块、类、对象,还好原作者放过了异常处理和生成器。
现在你知道学习软件开发有多难了吧。然而你看到的只是冰山的一角,它只会变得越来越有挑战。这也是为什么学会写程序将会是一个很大的生存优势。
可是为什么在软件使得人们越来越强大,能做很多从前不能做的事情的同时,制作软件却变得越来越难了呢?
半个多世纪以来,人们不断地发明着新的工具和方法把设计计算机软件变得更方便,能力更强大。与此同时,这些便利与强大的副产品是总有一些细节被有意无意地暴露在外面。这样的细节越来越多,学习的成本就越来越高。这种情况很像现在人人都需要有个懂电脑的朋友。总有些技术细节无法避免,并且它们的作用会越来越大,那么掌握它们就是未来最重要的生存技能。
那么为什么要从Python学起呢?
Python的基础部分很简单,代码组织也很直观,是初学编程的好选择。另外它也是一门很流行并且很有前途的语言。不要小看它,Python并不是专门的教学语言,他非常的强大。
有的朋友可能要问:“都什么年代了,编写程序还要写文本,就不能用鼠标画一画点一点把程序生成出来么?“
编写程序在过去很多年一直是采用写程序文本的形式(很早以前是在纸带上打孔),恐怕将来很多年也将还是像Python这样写程序文本,似乎这是目前唯一一种能让程序员自由灵活地表达意图的方式。很多人尝试过很多其它方式。比方说画出概念图来让计算机自己生成程序,这些尝试都不太成功。还有一些“可视化编程”工具和语言,比方说有一种教小孩子编程的Scratch语言。可这些语言能做的事情都很有限。
可能你在想:未来计算机越来越智能,还需要人来写程序么?
计算机是人的工具,只有人才知道他自己想让计算机做什么。就算是未来计算机强大到可以有自己的意志,那么人类掌握软件能力以防被计算机统治不是更重要么?
我从上小学的时候开始在长春市少年宫学习计算机,二十多年过去了,做个程序员的理想没有再变过。为此我要感谢当年话剧团的韩老师,是她把我带入了少年宫(我刚去少年宫时是搞文艺的),也要感谢长春市少年宫给我童年(直到初二)带来的永生难忘的快乐和知识。作为一个来自普通家庭的孩子,我不知道有多幸运。前不久听说少年宫当年教孩子计算机的一位邱老师刚刚过逝。这虽然不是我自己写的书,但我希望把这本译作献给那些在80年代万物复苏时教给我们这些70后孩子课堂以外知识的教育工作者们。让我们把薪火传递下去。
尹哲2013年12月
编程会培养创造能力、逻辑能力和解决问题的能力。编写程序的人有机会从无到有创造新事物,使用逻辑来把程序变成计算机可以运行的程序。在出了问题的时候你需要用解决问题的能力来找出是哪里不对。编程是一项既有趣,有时候又充满挑战的事情。从中学到的技巧对于学校和工作都很有用。就算你的职业方向和计算机没有关系也是这样。
除此之外,编程起码是外面天气不好的下午打发时间的好主意。
对于初学者来讲,Python是一款既容易学又相当有用的编程语言。相对于其他语言,它的代码相当易读,并且它有Shell程序让你可以输入并运行程序。Python的一些功能对于辅助学习过程很有效,让你可以把一些简单的动画放在一起来制作自己的游戏。其中之一是turtle模块,灵感来自于海龟作图(20世纪60年代由Logo语言使用),专门用作教育目的。还有tkinter模块,它是Tk图形界面的接口,可以简单地创建稍微复杂一点的图形和动画程序。
正如你首次尝试任何事情一样,最好从最基本的地方开始,所以要从第1章开始,别急着跳到后面的章节。谁也不能刚拿起一件乐器就马上能演奏交响乐。飞行员学员不会在掌握基本控制之前就去开飞机。体操运动员(一般来讲)不会第一次尝试就能翻跟头。如果你向前跳得太快,不但基础知识学得不牢,后面的章节也会让你觉得很复杂。
在阅读本书的过程中要自己动手试一试给出的那些例子。大多数章节后还有一些编程练习供你尝试,它们能帮你提高编程技巧。要记住,你对基础理解得越好,以后你理解复杂问题时越轻松。
当你受到挫折或者面临太大的挑战时,下面是一些我觉得有用的东西。
1.把大问题拆成小问题。尝试理解一小段代码是做什么的,或者只考虑困难问题的一小部分(只关注于一小段代码而不是尝试一下子整个理解)。
2.如果这样还不行,有时候不妨把它放到一边一段时间。先不去理它,过几天再回来。这对解决很多问题都很有效,尤其对于程序员来讲。
这本书写给任何对计算机编程有兴趣的人并且首次接触编程的人,不论小孩还是大人。如果想学习如何自己写软件,而不只是使用别人开发的程序,那么这本书将是个好的开始。
接下来的章节会帮助你安装Python,开启PythonShell程序以及执行简单计算,在屏幕上打印文本还有创建列表,用if语句和for循环执行简单的过程控制操作(还有if语句和for循环是什么)。你还会学到如何用函数来重用代码,基本的类和对象的知识,还有众多的Python内建函数及模块的介绍。
有不同章节分别介绍简单和高级海龟作图,还有用tkinter模块在计算机屏幕上画图。在很多章节的后面都有不同难度的编程练习题,这些练习让读者自己动手写小程序,以此来巩固刚刚学到的知识。
当你打好编程知识的基础后,你会学习如何写你自己的程序。你将开发两个图形游戏并学习冲突检测、事件,还有各种动画技术。
本书中大多数例子是用Python的IDLE程序做的。IDLE提供了语法高亮、复制粘贴功能(和其他应用程序相似),它还有一个编辑器窗口让你可以保存代码以后再用,也就是说IDLE既是一个做试验的交互环境又有点像一个文本编辑器。这些例子在标准控制台和普通的文本编辑器上都同样适用,但是IDLE提供的语法高亮和还算友好的环境可以帮你更好地理解。所以最前面的章节会教你如何使用它。
下面是每章内容的简单介绍。
第1章是安装Python的操作指南。
第2章介绍基本的计算和变量。
第3章介绍一些基本的Python类型,如字符串、列表和元组等。
第4章初次接触turtle(海龟)模块。我们从基本的编程转移到让海龟(一个看上去像箭头的形状)在屏幕上移动。
第5章涵盖了条件的变化以及if语句。
第6章接着讲了for循环和while循环。
从第7章开始,我们学会了使用和创建函数。然后在第8章我们讲了类和对象。我们讲到了足够让我们在本书的后面章节中开发电脑游戏所需的基本概念和编程技术。从这时开始,书中的内容开始有点复杂了。
第9章介绍了Python中大多数的内建函数。第10章继而介绍了Python默认安装的几个模块(模块基本上就是一些有用的功能的集合)。
第11章再回到turtle模块,让读者用到更复杂的形状。第12章使用tkinter模块来创建更高级的图形。
在第13章和第14章,我们创造了第一个游戏《弹球》,它是用我们在前面章节中学到的知识创造出来的。在第15到18章,我们创造了另一个游戏《火柴人逃生》。这些游戏开发章节中你可能会遇到很棘手的问题。如果实在解决不了的话,可以从本书的网站http://python-for-kids.com上下载代码,把你的代码和示例代码比较一下。
在“结束语”部分,我们参考了PyGame模块还有其他一些流行的编程语言。
最后,在附录中,你会了解到Python关键字的细节。在术语表中,你会找到本书中用到的编程术语的定义。
在你读书的时候如果需要帮助,可以使用本书的网站http://python-for-kids.com/。在上面你可以下载书中的所有例子,还有更多的编程练习。在网站上你还可以找到书中所有编程练习的答案,如果你做不出来,或者想检查你做的结果,可以参考。
请记住,学习本书进行编程是件让人开心的事。不要把它当成一项任务。要把编程当做是在创建有趣的游戏或者应用来和朋友还有其他人分享。
学习编程是一种很好的思维训练,效果也非常好。但更重要的是,不论你做什么,一定要开心!
计算机程序是一组让计算机执行某种动作的指令。和那些电路、芯片、卡、硬盘等不同,它不是计算机可触摸的部分,而是隐藏在背后运行在硬件上的东西。计算机程序(我常简称为“程序”)就是一系列告诉没有知觉的硬件做什么事情的命令。软件就是计算机程序的集合。
没有计算机程序,几乎所有你现在每天使用的设备都将变得要么没有用;要么没那么有用。计算机程序不仅以各种形式控制着你的个人电脑,同时还有你的电子游戏系统、移动电话,还有车里的GPS单元。还有些不那么明显的东西也是软件控制的,比如液晶电视和遥控器,还有某些最新型的收音机、DVD播放机、烤箱和电冰箱。甚至汽车引擎、红绿灯、路灯、火车信号、电子广告牌,还有电梯也是由程序控制的。
程序有点像思想。如果你没有思想,那么你可能就只能坐在地板上,两眼无神地任口水流到衣襟上。你想到"站起来",那是一条指令,或者叫命令,它告诉你的身体要站起来。同样地,计算机程序告诉计算机做什么。
如果你知道如何写计算机程序,你就可以做各种各样的事情。当然,你可能写不出可以控制汽车、信号灯或者冰箱的程序(至少不是一开始就做得到),但是你可以创建网页,自己写游戏,或者甚至写个程序来帮你完成作业。
和人类一样,计算机使用多种语言来沟通,这里所说的语言就是编程语言。简单地说,一种编程语言就是一种特定的与计算机交谈的方式,这种方式使用计算机和人都能理解的指令。
有些编程语言以人名命名(如Ada和Pascal),有些采用简单的首字母缩写(如BASIC和FORTRAN),甚至还有些以电视剧命名,如Python。是的,Python编程语言的名字来自电视剧《蒙提·派森的飞行马戏团》,而不是大蟒蛇。
《蒙提·派森的飞行马戏团》(Monty Python’s Flying Circus)是英国20世纪70年代首播的电视喜剧,直到今天仍受某些观众喜爱。Python的名字就是从这里来的[1]。
几样东西使得Python编程语言非常适合初学者。最重要的是,你可以用Python很快地写出简单有效的程序。Python没有很多复杂的符号,如大括号({})、井号(#)和美元符号($),这些符号会使得其他编程语言阅读的难度大幅增加,从而对于初学者也就不那么友好了。
安装Python相当简单。下面我们列举在Windows 7、苹果OS X,还有Ubuntu上的安装步骤。在安装Python的同时你也会安装IDLE程序的快捷方式,它是用来写Python程序的集成开发环境。如果你的电脑已经装好了Python,请直接跳到本书1.3节那一节。
在微软Windows 7上安装Python,先用网页浏览器打开http://www.python.org/,然后下载最新版的Python 3安装程序(Installer),如图1-1所示[2]。
图1-1 下载安装程序
具体下载哪一个版本的Python并不重要,只要是以数字3开头就可以。
下载了Windows安装程序以后,双击图标,然后按照提示把Python安装到默认位置,步骤如下。
1.选择“Install for All Users”,然后点击“Next”。
2.不要改变缺省路径,但要留意一下安装的路径(可能是C:\Python31或者C:\Python32)。点击“Next”。
3.忽略来自安装过程中定义Python的部分,点击“Next”。
安装完成后,在你的“开始”菜单中应该多了一项Python 3,如图1-2所示。
图1-2 开始菜单
接下来,按如下步骤来把Python 3的快捷方式加到桌面上来。
1.右键点击桌面,从弹出菜单中选择“新建->快捷方式”。
2.在注有“输入项目的位置”的框中输入下面内容(要确保你输入的路径就是之前所记录的那个):
你会看到如图1-3所示的一个对话框。
图1-3 输入项目路径
3.选择点击“下一步”来进入下一个对话框。
4.输入IDLE作为名字,然后点击“完成”来创建快捷方式。
现在你可以跳过后面的内容,直接到“当你安装好Python以后”那一页开始使用Python了。
如果你使用的是苹果电脑,你应该已经有预先安装好的Python,但它可能是语言的早期版本。要确保你运行的是最新版本,用浏览器打开http://www.python.org/getit/来下载最新版本的苹果安装程序。
有两种不同的安装程序。选择下载哪一个取决于你安装的苹果OS X的版本是什么。(在顶部的菜单条上点击苹果图标,然后选择“关于这台Mac”)。按照以下操作来选择一个安装程序。
如果你运行的苹果OS X的版本介于10.3和10.6之间,请下载“32-bit version of Python 3 for i386/PPC”。
如果你运行的苹果OS X版本是10.6或更高的话,请下载“64-bit/32-bit version of Python 3 for x86-64”。
当文件下载好以后(它的文件扩展名是.dmg),双击它。你会看到在一个窗口中显示文件的内容,如图1-4所示。
图1-4 显示文件的窗口
在这个窗口中,双击Python.mpkg,然后按照提示(英文)安装软件。在安装Python前你会被提示输入管理员的密码。(你没有管理员的密码?可能要找你的父母帮忙。)
接下来,你需要在桌面上加上一个脚本来启动Python的IDLE程序。步骤如下。
1.点击屏幕右上角的Spotlight放大镜图标。
2.在出现的输入框中输入Automator。
3.点击菜单中出现的那个看起来像个机器人一样的应用。
4.在Automator启动后,选择“应用程序”模板,如图1-5所示。
5.点击“选择”来继续。
图1-5 选择“应用程序”模板
6.在动作列表中找到“运行脚本”,然后把它拖到右边空白处,如图1-6所示。
图1-6 动作列表中的“运行脚本”
7.在文本框中你会看到一个词“cat”。选择这个词并把它替换成下面的文字:
你可能要根据你安装的Python版本的不同而改变其中的路径。
8.选择“文件->保存”,然后输入IDLE作为名字。
9.在“哪里”对话框中选择“桌面”,然后点击“保存”。
现在你可以跳过后面的内容,直接到“当你安装好Python以后”那一页开始使用Python了。
在Ubuntu Linux的发布版本中有预先安装好的Python,但是它可能是较早的版本。按以下步骤在Ubuntu 12.x上安装Python 3。
1.在边条上选择“Ubuntu软件中心”(它是个看上去像个桔色袋子的图标,如果你没看到它,可以点击“Dash主页”图标,然后在对话框中输入Software)。
2.在软件中心右上角的搜索框中输入Python。
3.在出现的软件列表中选择最新版本的IDLE,如图1-7所示。
图1-7 选择最新版本的IDCE
4.选择安装。
5.安装软件要输入你的管理员密码,然后点击“授权”。(如果你没有管理员密码的话,可能要找你的父母帮忙。)
在有些版本的Ubuntu上,你可能只能在主菜单上看到Python(3.2),而看不到IDLE,安装它也可以。
现在你已经安装好了最新版本的Python,让我们来试试它吧。
现在在你的Windows或者苹果OS X桌面上应该能看到标有IDLE的图标了。如果你用的是Ubuntu,在“应用”菜单中,你应该能看到一个新的组“编程”,其中有个应用叫IDLE(使用Python 3.2)或更早的版本。
双击这个图标,或者选择这个菜单项,你应该会看到如图1-8所示的窗口。
图1-8 打开Python Shell程序
这是“PythonShell程序”,是Python集成开发环境的一部分。这三个大于号(>>>)叫做“提示符”。
让我们在提示符后面输入一些命令,第一个是:
一定要输入里面的(英文)双引号(“”)。在输入完这一行后在键盘上按下回车键。如果你正确地输入了这个命令,你应该会看到下面的结果:
提示符会再次出现,通知你PythonShell程序准备好接受更多的命令。
恭喜你!你刚刚创建了你的第一个Python程序。其中的单词“print”(意为“打印”)是一种叫做“函数”的Python命令,它把引号之中的任何内容打印到屏幕上。其实你已经给计算机一个指令来显示“Hello World”,这是一个计算机和你都能理解的指令。
如果你每次想用Python程序时都需要重新输入的话那可太麻烦了,要把它打印出来参考也不是一个可行的办法。当然,重写小程序也没什么,但对于像字处理软件一样的大程序,其中可能包含有超过10万页的代码。想象一下,你要把这么一大堆纸背回家,可千万别吹来一阵大风。
幸运的是,我们可以把程序保存起来留在以后用。要保存一个新程序,打开IDLE程序,选择“文件->新窗口”;然后会出现一个空白窗口,在菜单条上有“*Untitled*”字样。在新Shell窗口中输入下面的代码:
然后,选择“文件->保存”。当提示输入文件名,输入hello.py,并把文件保存到桌面,然后选择“运行->运行模块”。不出问题的话,你保存的程序就可以运行了,如图1-9所示。
图1-9 保存和运行程序
现在,如果你关闭Shell程序窗口,但留着hello.py窗口,然后选择“运行->运行模块”,那么PythonShell程序会再次出现,并且你的程序会再次运行。(要想不运行程序就重新打开PythonShell程序,选择“运行->PythonShell程序”。)
在运行代码后,你会在桌面上发现一个新的标有hello.py的图标,如果你双击这个图标,会短暂地出现一个黑色窗口然后马上消失。到底发生了什么?
你看到的是Python命令行控制台(类似于Shell程序)启动,打印出“Hello World”,然后退出。如果你有超级英雄一样快速的视觉的话,在窗口关闭前你会看到如图1-10所示的内容。
图1-10 命令行控制台
除了用菜单之外,你还可以用快捷键来创建新的Shell程序窗口,保存文件和运行程序。
1.在Windows和Ubuntu上用Ctrl-N来创建一个新的Shell程序窗口,在编辑完毕后用Ctrl-S来保存文件,按F5来运行程序。
2.在苹果OS X上用-N来创建一个新的Shell程序窗口,用
-S来保存文件,按下功能键(FN)然后按F5来运行程序。
在这一章里我们以一个简单的Hello World程序开始,几乎每个人都是从这个程序开始学习计算机编程的。在下一章中,我们会用PythonShell程序做更有用的事情。
[1]译者注:“Python”这个单词在英文中是“蟒蛇”的意思。
[2]译者注:该网站为英文网站,上面有一个用中文写的“下载”链接。
好了,现在你的Python装好了,也知道如何启动Python Shell程序了,那么你就已经准备好用它来做点什么了。我们将从一些简单的计算开始,然后再使用变量。变量是计算机程序中用来保存东西的一种方式,它们能帮你写出有用的程序来。
一般来讲,当你要得到两个数字的乘积时你会用计算器或者笔和纸,比方说8 × 3.57。那么用PythonShell程序来运行这个计算是怎么样的?让我们来试一试。
双击桌面上的IDLE图标来启动PythonShell程序,或者如果你用Ubuntu的话,在“应用”菜单中点击IDLE图标。在提示符后面输入这个算式:
请注意,在Python里输入乘法运算时要使用星号(*)而不是乘号(×)。
让我们来试试另一个更有用一点的算式怎么样?
假设你在后院里挖出了一个装着20枚金币的袋子。第二天,你偷偷跑到地下室,把这些金币放进你爷爷发明的蒸汽动力的复制机里(很幸运的是你刚好能把20枚金币放进去)。你听到机器在吵闹,几个小时后,它吐出10枚闪闪发光的新的金币来。
如果在过去一年中的,你每天都这样做一遍的话,在你的财宝箱里会有多少金币?在纸上,这个算式可能会是这样:
10 × 365 = 3 650
20 + 3 650 = 3 670
当然,用计算器或者纸也能很容易地做这些运算,但是我们也可以用PyhonShell程序来做这些运算。首先,用10枚金币乘以一年中的365天得到3 650。接下来,我们加上原来的20枚金币就得到了3 670。
那么现在,如果要是有一只乌鸦发现了你卧室中闪亮的金子,而且每周它都能成功地飞进来并设法偷走3枚金币,那会怎样呢?
到一年结束时你还剩下多少金币?在Shell程序中这个算式是这个样子的:
首先,我们用3枚金币乘以一年中的52周。结果是156。把这个数字从我们总的金币数(3 670)中减掉,得到的结果是我们在一年结束时还剩下3 514枚金币。
这是一个很简单的程序。在这本书里,你将学到如何把这些想法扩展开,写出更有用的程序来。
在PythonShell程序中,你可以做乘法、加法、减法和除法。还有其他的一些数学运算符,我们现在先不讲。Python用来做数学运算的那些基本符号叫做“运算符”,在表2-1中列出。
表2-1 Python基本运算符
符号 |
运算 |
---|---|
+ |
加 |
- |
减 |
* |
乘 |
/ |
除 |
用斜杠(/)来表示除法是因为这与写分数的方式相似。例如,如果你有100个海盗和20个大桶,你想算算每个桶里要藏几个海盗,那你可以用100个海盗除以20个桶(100 ÷ 20),在PythonShell程序中输入100 / 20。要记住“斜杠”是顶部靠在右边的那个(靠左的是反斜杠“\”)。
在编程语言中,我们用括号来控制运算的顺序。任何用到运算符的东西都是一个“运算”。乘法和除法运算比加法和减法优先,也就是说它们先运算。换句话讲,如果你在Python中输入一个算式,乘法或者除法的运算会在加法或减法之前。
例如,在下面的算式中,数字30和20先相乘,然后数字5再加到这个乘积上。
这个算式是“30乘以20,然后把结果再加上5”的另一种说法。结果是605。我们可以通过给前面两个数字加上括号来改变运算的顺序。就像这样:
这个运算的结果是700(而不是605),因为括号告诉Python先做括号中的运算,然后再做括号之外的运算。这个例子就是在说:“5加上30,然后把结果乘以20。”
括号可以嵌套,就是说括号中还可以有括号,就像这样:
在这个例子中,Python先计算最里层的括号,然后是外面一层,最后再做那个除法运算。
也就是说,这个算式就是:“5加上30,然后把结果乘以20,再把这个结果除以10。”下面是具体的过程。
如果我们没用括号,结果就会有些不同:
这样的话,30首先与20相乘(得到600),然后600被10除(得到60),最后,加上5得到了结果65。
请记住乘法和除法总是在加法和减法之前,除非用括号来控制运算的顺序。
在编写程序时“变量”这个词是指一个存储信息的地方,例如数字、文本、由数字和文本组成的列表等等。另一种看待变量的方式是它就像贴在东西上的标签。
例如,要创造一个叫fred的变量,我们用等于号(=)然后告诉Python这个标签是贴在什么信息上的。下面,我们创建了fred这个变量并告诉Python它给数字100加上了标签(注意这并不意味着其他变量不能有同样的数值):
想知道一个变量给什么值加了标签,在Shell程序中输入print,后面括号里是变量的名字,就像这样:
我们也可以让Python来改变变量fred使它成为其他东西的标签。例如,下面是如何把fred改成数字200。
在第一行,我们说fred成为数字200的标签。在第二行,我们问fred它标记的是什么,就是为了确认这个改变。Python在最后一行打印出结果。
我们也可以使用不只一个标签(多个变量)来标记同一件东西:
在这个例子中,我们通过在john和fred之间使用等号来告诉Python,我们想让名字(或者说变量)john与fred标记同一个东西。
当然,fred对于变量来讲可能不是一个很有用的名字,因为它很可能根本没告诉我们这个变量是干什么用的。现在不用fred,让我们把变量起名字叫number_of_coins(金币的数量),像这样:
这就明确了我们是在说200枚金币。
变量名可以由字母、数字和下划线字符(_)组成,但是不能由数字开头。从一个字母(如a)到长长的句子都可以用来做变量名(变量名不能包含空格,所以要用下划线来分隔单词)。有些时候,如果你在匆忙地做一些事情,那么短一点的变量名最好。选择什么样的名字取决于你需要让这个变量名有多么大的含意。
现在你知道如何创建变量了,让我们看看如何使用他们。
还记得我们的那个算式吗?如果你能用地下室里你爷爷的疯狂发明魔法般地创造出新金币来,那么用来计算在一年后你会有多少金币的算式是这样的:
我们可以把它写在一行代码里:
那么,如果我们把这些数字变成变量呢?试着像下面这样输入:
这些输入的代码会创建出变量 found_coins(找到的金币)、magic_coins(魔法金币)和stolen_coins(被偷走的金币)。
那么现在,我们可以这样重新输入算式:
你可以看到它给出了同样的答案。所以,谁会在乎用哪种方式呢?对吧?嘿嘿,下面就要展示变量的魔力了。假如你在窗子上粘贴了一个稻草人,乌鸦这回只能偷到两枚金币而不是三枚了呢?如果我们用了变量,只要简单地把变量改为新的数字,那么在算式中每个用到它的地方都会改变。我们可以这样输入来把变量stolen_coins改为2:
然后我们可以拷贝粘贴算式来重新计算,步骤如下。
1.如图2-1所示,点击鼠标从这行的开头到结尾选中要拷贝的文本。
图2-1 选中要拷贝的文本
2.按住Ctrl键(如果你用苹果电脑则为键)然后按C来拷贝选中的文本(以后我们用Ctrl-C来代表这个操作)。
3.点击最后一个提示符(在stolen_coins = 2之后)。
4.按住Ctrl键然后按V来粘贴选中的文本(以后我们用Ctrl-V来代表这个操作)。
5.按回车键就会看到新的结果,如图2-2所示。
图2-2 新的运行结果
是不是比重新键入整个算式容易多了?那还用说!
你可以试试改变其他的变量,然后拷贝(Ctrl-C)并粘贴(Ctrl-V)算式来观察改变的效果。例如,如果你在恰当的时刻在边上猛敲一下你爷爷的发明,那么它每次会多吐出3枚金币,你会发现一年后你将得到4 661枚金币:
当然,用变量来做这样简单的计算,它的用处仍然很有限。我们还没见过它真正大展拳脚。现在,只要记住变量就是一种给事物加标签的方法,从而让我们以后可以使用它们就可以了。
在这一章里,你学到了如何用Python操作符来做简单计算以及如何用括号来控制Python计算算式中各部分的顺序。我们还创建了变量来给数值加上标签并在计算中使用这些变量。