趣学Python——教孩子学编程(第2版)

978-7-115-62015-6
作者: [美]贾森·R.布里格斯(Jason R. Briggs)
译者: 李强
编辑: 武晓燕
分类: Python

图书目录:

详情

Python是一款解释型、面向对象、动态数据类型的高级程序设计语言。Python语法简捷而清晰,具有丰富和强大的类库,因而在各行各业中得到广泛的应用。对于初学者来讲,Python是一款既容易学又相当有用的编程语言,国内外很多大学开设了学习课程,将Python作为一门编程语言学习。 本书是一本可让读者轻松、快速掌握Python编程的入门读物。全书分为3部分,共16章。第一部分是第1章到第10章,介绍Python编程基础知识,包括Python的安装和配置、变量、字符串、列表、元组和字典、条件语句、循环语句函数和模块、类、内建函数和绘图,等等。第二部分是第11章和第12章,介绍如何用Python开发实例游戏弹球。第三部分包括第13章到第16章,介绍了火柴人实例游戏的开发过程。 本书语言轻松,通俗易懂,讲解由浅入深,力求将读者阅读和学习的难度降低。任何对计算机编程有兴趣的人或者首次接触编程的人,不论孩子还是成人,都可以通过阅读本书来学习Python编程。

图书摘要

版权信息

书名:趣学Python——教孩子学编程(第2版)

ISBN:978-7-115-62015-6

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

著    [美]贾森·R.布里格斯(Jason R. Briggs)

译    李 强

责任编辑 武晓燕

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

内容提要

Python是一款解释型、面向对象、动态数据类型的高级程序设计语言。Python语法简捷而清晰,具有丰富和强大的类库,因而在各行各业中得到广泛的应用。对于初学者来讲,Python是一款既容易学又相当有用的编程语言,国内外很多大学开设了学习课程,将Python作为一门编程语言学习。

本书是一本可让读者轻松、快速掌握Python编程的入门读物。全书分为3部分,共16章。第一部分是第1章到第10章,介绍Python编程基础知识,包括Python的安装和配置、变量、字符串、列表、元组和字典、条件语句、循环语句函数和模块、类、内建函数和绘图,等等。第二部分是第11章和第12章,介绍如何用Python开发实例游戏弹球。第三部分包括第13章到第16章,介绍了火柴人实例游戏的开发过程。

本书语言轻松,通俗易懂,讲解由浅入深,力求将读者阅读和学习的难度降低。任何对计算机编程有兴趣的人或者首次接触编程的人,不论孩子还是成人,都可以通过阅读本书来学习Python编程。

作者简介

Jason R. Briggs从8岁起就是一名程序员了,那时他在Radio Shack TRS-80 学习了BASIC语言。他作为开发人员和系统架构师编写专业的软件,同时还是《Java开发者》(Java Developer’s Journal)杂志的撰稿编辑。他的文章曾经上过JavaWorldOnJava以及ONLamp。他的电子邮箱地址是mail@jasonrbriggs.com。

关于插图

Miran Lipovača 是Learn You a Haskell for Great Good! 的作者。他喜欢拳击、弹贝斯和画画。他对于舞动的简笔画小人还有数字71很着迷。当他走到自动门的前面时他总是假装是他用意念打开的门。

技术审阅者简介

Daniel Zingaro 博士是多伦多大学计算机科学副教授和获奖教师。他的研究重点是理解并加强学生对计算机科学的学习。他是Algorithmic Thinking(一本关于算法和数据结构的没有废话、没有数学的指南)和Learn to Code by Solving Problems(《Python编程做中学》,一本学习Python和计算思维的入门书)的作者。

致  谢

感谢No Starch团队的所有努力,感谢Miran Lipovača为本书绘制的有趣的插图。

感谢我的妻子、女儿和儿子,感谢你们忍受作为丈夫和父亲的我将更多的时间用在了电脑上。

感觉妈妈,感谢你多年来对我无尽的鼓励。

最后,感谢我的父亲在20世纪70年代买了一台电脑,并容忍了一个和他一样想用电脑的人。没有他,这一切都不可能实现。

前  言

为什么要学习计算机编程

编程可以培养创造力、推理能力和解决问题的能力。程序员有机会从无到有地创造一些新事物,使用逻辑将程序设计结构转变为计算机可以运行的形式,并且当事情没有像预期的那样工作得很好时,你需要使用解决问题的思路来搞清楚哪里出了问题。编程是一项既有趣,有时又具有挑战性(偶尔也会令人沮丧)的活动。即使你的职业与计算机无关,但从编程中学到的技能,在学校和工作中都是很有用的。而且,当室外天气沉闷的时候,编程是打发无聊午后时光的好方式。

为什么使用Python

Python是一门易于学习的编程语言,对于初级程序员而言,它具有一些非常有用的功能。与其他编程语言相比,Python的代码非常容易阅读,并且它有一个交互式Shell,你可以在其中输入程序并查看它们的运行。

除了简单的语言结构和便于尝试的交互式Shell,Python还有一些模块对于辅助学习过程很有效,还允许组合简单的动画来创建你自己的游戏。Python有一个turtle模块,其灵感来自于Turtle图形程序(早在20世纪60年代,Logo编程语言就使用了它),用于教育目的。Python还包含tkinter模块,这是Tk图形用户界面(GUI)工具包的一个接口,它提供了一种简单的方法来创建更高级的图形和动画功能的程序。

如何学习编程

就像小孩子学走路一样,最好从基础开始,所以请从第1章开始学习,而不要直接跳到后面的章节。没有人在第一次拿起乐器时就能演奏交响乐。学习飞行的人在掌握基本操作之前,也不会开始驾驶飞机。体操运动员(通常)也不能刚开始就能做后空翻。如果你跳跃得太快,不仅记不住基本的概念,而且你还会发现后面几章的内容实际上复杂得多。

当你阅读本书时,请尝试所有示例,从而了解它们是如何工作的。大多数章节还会包含供你尝试的编程小测验,这将有助于提高你的编程技能。记住,你对基础知识理解得越好,就越容易理解后面更复杂的概念。当你发现一些令人沮丧或太具挑战性的事情时,以下是一些我认为有帮助的方法。

1. 把问题分解成更小的部分。尝试理解一小段代码在做什么,或者只考虑比较难的概念的一小部分(专注于一小段代码,而不是试图一次性地理解整段代码)。

2. 如果这还不起作用,最好还是先别管它。好好睡一觉,改天再来看看。这是解决许多问题的好方法,对计算机程序员而言,尤其有帮助。

本书适合哪些人

这本书适合对计算机编程感兴趣的任何人,无论是儿童还是第一次接触编程的成年人。如果你想学习如何编写自己的软件,而不是仅仅使用他人开发的程序,那么本书是一个很好的起点。

在接下来的章节中,你将学习如何安装Python,启动Python Shell,执行基本的计算,在屏幕上打印文本和创建列表,以及使用if语句和for循环执行简单的控制流操作(并了解if语句和for循环是什么)。你将学习通过函数实现代码复用,类和对象的基础知识,以及许多内置的Python函数和模块的用法。

你会看到关于简单和高级海龟作图的内容,以及在计算机屏幕上使用tkinter模块绘图的方法。许多章节末尾的不同复杂度的编程小测验,将帮助你通过编写小程序来巩固新学到的知识。一旦掌握了基本的编程知识,你将学习如何编写自己的游戏。在本书中,你将开发两个图形游戏,并了解基本的碰撞检测、事件和不同的动画技术。

本书中的大多数示例都使用了Python的IDLE(集成开发环境)Shell。IDLE提供了语法高亮显示、复制和粘贴功能(和你在其他应用程序中使用的功能相似),还有一个编辑器窗口,你可以在其中保存代码以便随后使用。这意味着IDLE既是一个交互的实验环境,也有点类似于文本编辑器。程序示例在标准的控制台和常规的文本编辑器上都可以工作,但是IDLE的语法高亮显示和更友好的用户环境有助于你理解程序,所以本书第1章将介绍如何设置它。

本书内容

下面是每一章内容的简要概述。

第1章是对编程的介绍,其中包含首次安装Python的说明。第2章介绍基本的计算和变量,第3章介绍一些基本的Python类型,如字符串、列表和元组等。第4章初次接触turtle(海龟)模块。我们从基本的编程转移到让海龟(一个看上去像箭头的形状)在屏幕上移动。

第5章涵盖了各种条件以及if语句,第6章接着介绍了for循环和while循环。

第7章开始使用和创建函数。在第8章中,我们介绍了类和对象。我们介绍了足够让我们在本书的后面章节中开发计算机游戏所需的基本概念和编程技术。从这时开始,书中的内容变得有点复杂了。

第9章再回到turtle模块,开始绘制更复杂的形状。第10章使用tkinter模块来创建更高级的图形。

在第11章和第12章中,我们创建了第一个游戏“弹球游戏”,这是基于前面章节中所介绍的知识来构建的。在第13章到16章中,我们创建了另一个游戏“火柴小人逃脱”。游戏开发章节是可能会出现严重错误的地方。如果所有其他尝试都失败了,请根据“资源与支持”页中的提示从异步社区下载本书配套源代码,并将你的代码与示例代码比较一下。

最后,在结束语中,我们简要地介绍如何使用Python Package Installer(PIP)来安装Pygame模块,还有一个简短的Pygame示例,随后还介绍了一些其他编程语言的示例。附录A是一个Python关键字列表。附录B是一些有用的内置函数的列表(你将在本书后面的部分了解关键字和函数)。附录C提供了一些常见问题的故障排除信息。

祝你编程开心!

在阅读本书的过程中,请记住编程是一件让人开心的事。不要把它当成一项任务。要把编程当作在创建可以和朋友还有其他人分享的有趣游戏或者应用。

学习编程是一种很好的思维训练,效果也非常好。但更重要的是,不论你做什么,一定要开心!

资源与支持

资源获取

本书提供如下资源:

本书源代码;

习题答案;

本书思维导图;

异步社区7天VIP会员。

要获得以上资源,您可以扫描下方二维码,根据指引领取。

提交勘误

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

当您发现错误时,请登录异步社区(https://www.epubit.com/),按书名搜索,进入本书页面,单击“发表勘误”,输入勘误信息,单击“提交勘误”按钮即可(见下图)。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。

与我们联系

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

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

如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们。

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

如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。

关于异步社区和异步图书

异步社区”(www.epubit.com)是由人民邮电出版社创办的IT专业图书社区,于2015年8月上线运营,致力于优质内容的出版和分享,为读者提供高品质的学习内容,为作译者提供专业的出版服务,实现作者与读者在线交流互动,以及传统出版与数字出版的融合发展。

异步图书”是异步社区策划出版的精品IT图书的品牌,依托于人民邮电出版社在计算机图书领域30余年的发展与积淀。异步图书面向IT行业以及各行业使用IT技术的用户。

第一部分 学习编程

第1章 Python不是大蟒蛇

计算机程序是一组让计算机执行某种动作的指令。和那些电路、芯片、卡、硬盘等不同,它不是计算机可触摸的部分,而是隐藏在背后指挥机器运行的东西。计算机程序(我常简称为“程序”)就是一系列告诉没有知觉的硬件做什么事情的命令。软件就是计算机程序的集合。

没有计算机程序,几乎所有我们现在每天使用的设备都将变得要么根本没有用,要么没那么有用。计算机程序不仅以各种形式控制着你的个人电脑,同时还控制着你的电子游戏系统、移动电话,还有车里的GPS。还有液晶电视和遥控器,某些新型的收音机、DVD播放机、烤箱和电冰箱,甚至汽车引擎、红绿灯、路灯、火车信号、电子广告牌和电梯也是由程序控制的。

程序有点像思想。如果你没有思想,那么你可能就只能坐在地板上,两眼无神地盯着墙壁。你想到“站起来”,那是一条指令,或者叫命令,它告诉你的身体要站起来。同样地,计算机程序告诉计算机做什么。

如果你知道如何写计算机程序,你就可以做各种各样的事情。当然,你可能写不出控制汽车、信号灯或者冰箱的程序(至少不是一开始就做得到),但是你可以创建网页,自己写游戏甚至写个程序来帮你完成作业。

1.1 关于计算机语言

和人类一样,计算机使用多种语言来沟通,这里所说的语言就是编程语言。简单地说,一种编程语言就是一种特定的与计算机交谈的方式,这种方式使用计算机和人都能理解的指令。

有些编程语言以人名命名(如Ada和Pascal),有些采用简单的首字母缩写(如BASIC和FORTRAN),甚至还有些以电视剧命名,如Python。是的,Python编程语言的名字来自电视剧《蒙提·派森的飞行马戏团》,而不是大蟒蛇。

  NOTE  《蒙提·派森的飞行马戏团》(Monty Python’s Flying Circus)是英国20世纪70年代首播的电视喜剧,直到今天仍受某些观众喜爱。Python的名字就是从这里来的[1]

[1] Python这个单词在英文中是“蟒蛇”的意思。——译者注

有几项功能使得Python编程语言非常适合初学者。最重要的是,你可以用Python很快地写出简单有效的程序。Python没有像其他编程语言一样有很多复杂的符号,从而对初学者来说更容易阅读也更友好。(并不是说Python不使用符号,只是没有像其他语言使用得那么多)。

1.2 安装Python

安装Python相当简单。下面我们列举在Windows 11、macOS还有Ubuntu和树莓派上的安装步骤。在安装Python的同时你也会安装IDLE程序的快捷方式,它是用来写Python程序的集成开发环境。如果你的电脑已经装好了Python,请直接跳到本书的1.3节。

1.2.1 在Windows 11上安装Python

在微软Windows 11上安装Python,先用网页浏览器打开Python官方网站的下载页面,然后下载Python 3.10或更高版本的安装程序。具体下载哪个版本的Python并不重要,只要保证至少是3.10及以后版本就可以。但是,如果使用更早版本的Windows(例如Windows 7),最新的Python就没有办法安装,你需要安装 Python 3.8。可以通过针对Windows平台的下载页面来查看适用于你的Windows系统的Python版本,如图1-1所示。

图1-1 下载Windows版本的Python安装程序

如果浏览器询问是保存还是打开文件,选择保存。一旦下载了Windows安装文件,系统应该会提示你运行它。如果没有提示,打开“下载”文件夹,双击这个文件。现在,按照屏幕上的安装提示把Python安装到默认位置,步骤如下。

1. 选择Install。

2. 当询问是否允许应用程序修改你的设备时,请选择Yes。

3. 安装完成后单击Close,在你的“开始”菜单中应该多了几项Python 3.10的图标,如图1-2所示。

图1-2 Windows开始菜单中的Python3.10

现在你可以跳过后面的内容,直接到1.3节开始使用Python了。

1.2.2 在macOS上安装Python

如果你使用的是苹果电脑,你应该已经有预先安装好的Python,但它可能是早期版本的Python。要确保你运行的是足够新的版本,单击spotlight图标(右上角的放大镜),在出现的对话框中输入terminal。打开终端窗口后,输入 python3 --version(两个短横线后跟着单词version),按下回车键。如果看到“命令不存在”或者版本低于3.10,用浏览器打开Python官方网站的下载页面来下载最新版本的苹果安装程序,如图1-3所示。

图1-3 下载macOS系统的Python安装程序

当文件下载好以后(它的文件类似于python-3.10.0-maxosx11.pkg),双击它。同意许可证协议,按照屏幕上的提示来安装软件。在安装Python前你会被提示输入管理员的密码。如果你没有管理员的密码,请找你的父母或其他人来帮忙。安装好的Python文件如图1-4所示。

图1-4 在苹果电脑上资源管理器中的Python

现在你可以跳过后面的内容,直接到1.3节开始使用Python了。

1.2.3 在Ubuntu上安装Python

Ubuntu Linux的发布版本中有预先安装好的Python,但是可能是较早的版本。按以下步骤获取最新版本的Python。

1. 单击Show Applications图标(通常是屏幕左下角的9个点)。

2. 在输入框中输入terminal(如果已经显示了Terminal,单击它)。

3. 出现了终端窗口后,输入以下命令:

sudo apt update
sudo apt install python3.10 idle-python3.10

输入第一个命令后,可能要你输入管理员密码。(如果你没有管理员密码的话,可能要找你的父母或者老师帮忙。)安装过程如图1-5所示。

图1-5 在Ubuntu的终端窗口安装Python

现在你可以跳过后面的内容,直接到1.3节开始使用Python了。

1.2.4 在树莓派(Raspberry Pi)上安装Python

树莓派的操作系统已经预先安装好了Python 3,但是在编写本书的时候,它的版本是3.7。和其他操作系统相比,树莓派安装更新版本的Python会稍微复杂一些,你需要自己下载和构建Python的安装。其实自己安装并没有听上去那么难。只要一步一步输入下面的命令,然后等待每一条命令完成即可。

sudo apt update
sudo apt install libffi-dev libssl-dev tk tk-dev
wget ***.python.org/ftp/python/3.10.0/Python-3.10.0.tar.xz
tar -xvf Python3.10.0.tar.xz
cd Python-3.10.0
./configure --prefix=/usr/local/opt/python-3.10.0
make -j 4
sudo make altinstall

倒数第2步将花费最长的时间,因为它会构建Python应用中包含的所有代码,如图1-6所示。

图1-6 在树莓派的终端窗口安装Python

安装好后,你需要把一个名叫IDLE的程序添加到菜单(这会让后边的使用更容易些)。

1. 单击屏幕左上角的树莓派图标,然后单击Preferences,选择Main Menu Editor。

2. 在出现的窗口中,单击Programming,然后单击New Item按钮。

3. 在出现的Launcher Properties对话框中,输入idle3.10,如图1-7所示,然后输入下面这行命令:

/usr/local/opt/python-3.10.0/bin/idle3.10

4. 单击OK按钮,然后在主编辑器窗口再次单击OK来完成安装,现在就可以进入下一节了。

图1-7 在树莓派中启动安装

1.3 当你安装好Python以后

安装好Python后,我们在IDLE(也叫作Shell)中编写第一个程序。如果使用Windows操作系统,在查询窗口(屏幕左下角)输入idle,在出现最符合搜索项的菜单中选择IDLE(64位 Python 3.10)。如果使用苹果电脑,选择Go菜单下的Applications,打开Python 3.10文件夹,找到IDLE。如果使用Ubuntu,单击Show Applications,然后单击下面的All标签,就可以看到一个标题为IDLE(Python-3.10)的入口,如果看不到也可以在搜索框中输入IDLE。如果使用树莓派,单击屏幕左上角的树莓派图标,单击Programming,然后在出现的列表中选择idle3.10。打开IDLE后,你应该会看到图1-8所示的窗口。

图1-8 Windows中的Python Shell程序

这是“Python Shell程序”,是Python集成开发环境的一部分。这三个大于号(>>>)叫作“提示符”。

让我们在提示符后面输入一些命令,第一个是著名的句段:

>>> print("Hello World")

一定要输入括号里面的(英文)双引号(" ")。在输入这一行后在键盘上按下回车键。如果你正确地输入了这个命令,你应该会看到下面的结果:

>>> print("Hello World") 
Hello World 
>>>

提示符会再次出现,通知你PythonShell程序准备好接受更多的命令。

恭喜你!你刚刚创建了你的第一个Python程序。其中的单词print(意为“打印”)是一种叫作“函数”的Python命令,它把引号之中的任何内容打印到屏幕上。其实你已经给计算机一个指令来显示Hello World,这是一个计算机和你都能理解的指令。    

1.4 保存Python程序

如果你每次想用Python程序时都需要重新输入的话那可太麻烦了,要把它打印出来参考也不是一个可行的办法。当然,重写小程序也没什么,但对于像字处理软件一样的大程序,其中可能包含超过10万页的代码,这就有点难了。想象一下,你要把这么一大堆纸背回家,可千万别吹来一阵大风。

幸运的是,我们可以把程序保存起来留在以后用。要保存一个新程序,打开IDLE程序,选择File(文件)->New Window(新窗口);然后会出现一个空白窗口,在菜单条上有*Untitled*字样。在新Shell窗口中输入下面的代码:

>>> print("Hello World") 

然后,选择File(文件)->Save(保存)。当提示输入文件名时,输入hello.py,并把文件保存到桌面,然后选择Run(运行)->Run Module(运行模块)。不出问题的话,你保存的程序就可以运行了,如图1-9所示。

图1-9 在IDLE中的Hello World

现在,如果你关闭Shell程序窗口,但留着hello.py窗口,然后选择Run->Run Module,那么Python Shell程序会再次出现,并且你的程序会再次运行。(要想不运行程序就重新打开Python Shell程序,选择Run(运行)->Python Shell。)

在运行代码后,你会在桌面上发现一个新的标有hello.py的图标,如果你双击这个图标,会短暂地出现一个黑色窗口然后马上消失。到底发生了什么?  

你看到的是Python命令行控制台(类似于Shell程序)启动,打印出Hello World,然后退出。如果你有超级英雄一样敏锐的眼力,在窗口关闭前你会看到图1-10所示的内容。

图1-10 命令行控制台

  NOTE  取决于你的操作系统,Python可能无法运行,或者可能运行一个和我们所安装版本不同的Python。

除了用菜单,你还可以用快捷键来创建新的Shell程序窗口、保存文件和运行程序。

1. 在Windows、Ubuntu和树莓派上用Ctrl+N组合键来创建一个新的Shell程序窗口,在编辑完毕后用Ctrl+S组合键来保存文件,按F5来运行程序。

2. 在苹果OS 上用-N来创建一个新的Shell程序窗口,用-S来保存文件,按下功能键(FN)然后按F5来运行程序。

1.5 你学到了什么

在这一章中我们以一个简单的Hello World程序开始,几乎每个人都是从这个程序开始学习计算机编程的。在下一章中,我们会用Python Shell程序做更有用的事情。

第2章 计算与变量

好了,现在你的Python装好了,也知道如何启动Python Shell程序了,你准备好用它来做点什么了吗?我们将从一些简单的计算开始,然后再使用变量。变量是计算机程序中用来保存东西的一种方式,它能帮你写出有用的程序。

2.1 用Python来做计算

一般来讲,当你要得到两个数字的乘积时你会用计算器或者纸笔,比方说计算8×3.57,如何用Python Shell程序来运行这个计算呢?让我们来试一试。

双击桌面上的IDLE图标来启动Python Shell程序。如果你用的是Ubuntu操作系统,在“应用”菜单中单击IDLE图标。在提示符后面输入以下算式:

>>> 8 * 3.57
28.56

请注意,在Python里输入乘法符号时要使用星号(*)而不是乘号(×)。

让我们来试试另一个更有用一点的算式怎么样?

假设你在后院里挖出了一个装着20枚金币的袋子。第二天,你偷偷跑到地下室,把这些金币放进你爷爷发明的蒸汽动力的复制机里(很幸运的是你刚好能把20枚金币放进去)。你听到机器在吵闹,几小时后,它吐出10枚闪闪发光的新的金币。

如果在过去一年中,你每天都这样做一遍的话,在你的财宝箱里会有多少金币?在纸上,这个算式可能会是这样:

10 × 365 = 3 650

20 + 3 650 = 3 670

当然,用计算器或者纸也能很容易地做这些运算,但是我们也可以用Python Shell程序来做这些运算。首先,用10枚金币乘以一年的365天得到3 650。接下来,我们加上原来的20枚金币就得到了3 670:

>>> 10 * 365
3650
>>> 3650 + 20
3670

那么现在,要是有一只乌鸦发现了你卧室中闪亮的金币,而且每周它都能成功地飞进来并设法偷走3枚金币,那到一年结束时你还剩下多少金币?在Shell程序中这个算式是这个样子的:

>>> 3 * 52
156
>>> 3670 - 156
3514

首先,我们用3枚金币乘以一年的52周,结果是156。把这个数字从我们总的金币数(3 670)中减掉,得到的结果是我们在一年结束时还剩下3 514枚金币。

虽然使用计算器可以很容易地完成这个运算,但在Shell程序中完成计算对学习编写简单的计算机程序很有帮助。在本书中,你将学到如何把这些想法扩展开来,写出更有用的程序。

2.1.1 Python的运算符

在Python Shell程序中,你可以做乘法、加法、减法和除法。当然,还有其他的一些数学运算符,我们现在先不讲。Python用来做数学运算的那些基本符号叫作“运算符”,如表2-1所示。

表2-1 Python基本运算符

符号

运算

+

-

*

/

用斜杠(/)表示除法是因为它与分数的表示方式相似。例如,如果有100个海盗和20个大桶,你想算算每个桶里要藏几个海盗,那你可以用100个海盗除以20个桶(100 ÷ 20),在Python Shell程序中输入100 / 20。  

2.1.2 运算的顺序

在编程语言中,我们用括号来控制运算的顺序。任何用到运算符的东西都是一个“运算”。乘法和除法运算比加法和减法优先,也就是说乘除法先运算。换句话讲,如果你在Python中输入一个算式,乘法或者除法的运算会在加法或减法之前。

例如,在下面的算式中,数字30先和20相乘,然后数字5再加到这个乘积上:

>>> 5 + 30 * 20
605

这个算式是“30乘以20,然后把结果再加上5”的另一种说法。结果是605。我们可以通过给前面两个数字加上括号来改变运算的顺序。就像这样:

>>> (5 + 30) * 20
700

这个运算的结果是700(而不是605),因为括号告诉Python先做括号中的运算,然后再做括号之外的运算。这个例子就是在说:“5加上30,然后把结果乘以20。” 

括号可以嵌套,就是说括号中还可以有括号,就像这样:

>>> ((5 + 30) * 20) / 10
70.0

在这个例子中,Python先计算最里层的括号,然后是外面一层,最后再做除法运算。

也就是说,这个算式的意思是“5加上30,然后把结果乘以20,再把这个结果除以10。”下面是具体的过程。

5加30得到35。

35乘以20得到700。

把700除以10得到了最终结果70。

如果没用括号,结果就会不同:

>>> 5 + 30 * 20 / 10
65.0

这样的话,30首先与20相乘(得到600),然后600被10除(得到60),最后,加上5得到了结果65。

  NOTE  请记住乘法和除法总是在加法和减法之前,除非用括号来控制运算的顺序。

2.2 变量就像标签

在编写程序时“变量”这个词是指一个存储信息(例如数字、文本、由数字和文本组成的列表等)的地方。另一种看待变量的方式是它就像贴在东西上的标签。例如,要创造一个名为fred的变量,我们用等于号(=)告诉Python这个标签是贴在什么信息上的。下面,我们创建了fred这个变量并告诉Python它给数字100加上了标签(注意这并不意味着其他变量不能有同样的数值):

>>> fred = 100

想知道一个变量给什么值加了标签,在Shell程序中输入print,后面括号中是变量的名字,就像这样:

>>> print(fred)
100

我们也可以让Python来修改变量fred,使它成为其他值的标签。例如,下面是如何把fred改成数字200:

>>> fred = 200
>>> print(fred)
200

在第一行,我们说fred成为数字200的标签。在第二行,我们输出fred的值,就是为了确认这个改变。Python在最后一行打印出结果。

我们也可以使用不止一个标签(多个变量)来标记同一件东西:

>>> fred = 200
>>> john = fred
>>> print(john)
200

在这个例子中,我们通过在johnfred之间使用等号来告诉Python,我们想让名字(或者说变量)johnfred标记同一个东西。

当然,对于变量来讲fred可能不是一个很有用的名字,因为它根本没告诉我们这个变量是干什么用的。现在不用fred,让我们把变量起名为number_of_coins(金币的数量),像这样:

>>> number_of_coins = 200
>>> print(number_of_coins)
200

这就明确了我们是在说200枚金币。变量名可以由字母、数字和下划线字符(_)组成,但是不能由数字开头。从一个字母(如a)到长长的句子都可以用来做变量名(变量名不能包含空格,所以要用下划线来分隔单词)。有些时候,如果你要快速地做一些事情,那么短一点的变量名最好。选择什么样的名字取决于你需要让这个变量名有多么大的含意。

现在你知道如何创建变量了,让我们看看如何使用它们。

2.3 使用变量

还记得之前的那个算式吗?如果你能用地下室里你爷爷的疯狂发明像变戏法般地创造出新金币来,那么计算在一年后你会有多少金币的算式是这样的:

>>> 20 + 10 * 365
3670
>>> 3 * 52
156
>>> 3670 - 156
3514

我们可以把它写成一行代码:

>>> 20 + 10 * 365 - 3 * 52
3514

这个样子不太容易阅读,那么,如果我们把这些数字变成变量呢?试着像下面这样输入:

>>> found_coins = 20
>>> magic_coins = 10
>>> stolen_coins = 3

这些输入的代码会创建出变量 found_coins(找到的金币)、magic_coins(魔法金币)和stolen_coins(被偷走的金币)。

那么现在,我们可以这样重新输入算式:

>>> found_coins + magic_coins * 365 - stolen_coins * 52
3514

你可以看到它给出了同样的答案。所以,谁会在乎用哪种方式呢?对吧?嘿嘿,下面就要展示变量的魔力了。假如你在窗子上粘贴了一个稻草人,乌鸦这回只能偷到2枚金币而不是3枚了呢?如果我们用了变量,只要简单地把表示被偷走的金币的变量改为新的数字,那么算式中每个用到它的地方都会改变。我们可以这样输入来把变量stolen_coins改为2:  

>>> stolen_coins = 2

然后我们可以复制粘贴算式来重新计算,步骤如下:

1. 如图2-1所示,单击鼠标从这行的开头到结尾选中要复制的文本。

2. 按住Ctrl键(如果你用苹果电脑则为键)然后按C键来复制选中的文本(以后我们用Ctrl+C组合键来代表这个操作)。

3. 单击最后一个提示符(在stolen_coins = 2之后)。

4. 按住Ctrl键然后按V键来粘贴选中的文本(以后我们用Ctrl+V组合键来代表这个操作)。

5. 按回车键就会看到新的结果,如图2-2所示。

图2-1 选中要复制的文本

图2-2 新的运行结果

是不是比重新录入整个算式容易多了?

你可以试试改变其他的变量,然后复制(Ctrl+C组合键)并粘贴(Ctrl+V组合键)算式来观察改变的效果。例如,如果你在恰当的时刻在边上猛敲一下你爷爷的发明,那么它每次会多吐出3枚金币,你会发现一年后你将得到4 661枚金币:

>>> magic_coins = 13
>>> found_coins + magic_coins * 365 - stolen_coins * 52
4661

当然,用变量来做这样简单的计算时,它的用处仍然很有限。到现在我们还没见过变量真正大展拳脚,只要记住变量就是一种给事物加标签的方法,我们以后知道怎么使用它就可以了。

2.4 你学到了什么

在这一章里,你学到了如何用Python操作符来做简单计算以及如何用括号来控制Python计算式中各部分的顺序。我们还创建了变量来给数值加上标签并在计算中使用这些变量。

相关图书

Python极客项目编程(第2版)
Python极客项目编程(第2版)
动手学自然语言处理
动手学自然语言处理
Python财务应用编程
Python财务应用编程
Web应用安全
Web应用安全
深度学习的数学——使用Python语言
深度学习的数学——使用Python语言
Python量子计算实践:基于Qiskit和IBM Quantum Experience平台
Python量子计算实践:基于Qiskit和IBM Quantum Experience平台

相关文章

相关课程