好了,现在你的Python装好了,也知道如何启动Python Shell程序了,你准备好用它来做点什么了吗?我们将从一些简单的计算开始,然后再使用变量。变量是计算机程序中用来保存东西的一种方式,它能帮你写出有用的程序。
一般来讲,当你要得到两个数字的乘积时你会用计算器或者纸笔,比方说计算8×3.57,如何用Python Shell程序来运行这个计算呢?让我们来试一试。
双击桌面上的IDLE图标来启动Python Shell程序。如果你用的是Ubuntu操作系统,在“应用”菜单中单击IDLE图标。在提示符后面输入以下算式:
>>> 8 * 3.57
28.56
请注意,在Python里输入乘法符号时要使用星号(*)而不是乘号(×)。
让我们来试试另一个更有用一点的算式怎么样?
假设你在后院里挖出了一个装着20枚金币的袋子。第二天,你偷偷跑到地下室,把这些金币放进你爷爷发明的蒸汽动力的复制机里(很幸运的是你刚好能把20枚金币放进去)。你听到机器在吵闹,几小时后,它吐出10枚闪闪发光的新的金币。
如果在过去一年中,你每天都这样做一遍的话,在你的财宝箱里会有多少金币?在纸上,这个算式可能会是这样:
当然,用计算器或者纸也能很容易地做这些运算,但是我们也可以用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程序中完成计算对学习编写简单的计算机程序很有帮助。在本书中,你将学到如何把这些想法扩展开来,写出更有用的程序。
在Python Shell程序中,你可以做乘法、加法、减法和除法。当然,还有其他的一些数学运算符,我们现在先不讲。Python用来做数学运算的那些基本符号叫作“运算符”,如表2-1所示。
表2-1 Python基本运算符
用斜杠(/)表示除法是因为它与分数的表示方式相似。例如,如果有100个海盗和20个大桶,你想算算每个桶里要藏几个海盗,那你可以用100个海盗除以20个桶(100 ÷ 20),在Python Shell程序中输入100 / 20。
在编程语言中,我们用括号来控制运算的顺序。任何用到运算符的东西都是一个“运算”。乘法和除法运算比加法和减法优先,也就是说乘除法先运算。换句话讲,如果你在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 请记住乘法和除法总是在加法和减法之前,除非用括号来控制运算的顺序。
在编写程序时“变量”这个词是指一个存储信息(例如数字、文本、由数字和文本组成的列表等)的地方。另一种看待变量的方式是它就像贴在东西上的标签。例如,要创造一个名为
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
在这个例子中,我们通过在
john
和
fred
之间使用等号来告诉Python,我们想让名字(或者说变量)
john
与
fred
标记同一个东西。
当然,对于变量来讲
fred
可能不是一个很有用的名字,因为它根本没告诉我们这个变量是干什么用的。现在不用
fred
,让我们把变量起名为
number_of_coins
(金币的数量),像这样:
>>> number_of_coins = 200
>>> print(number_of_coins)
200
这就明确了我们是在说200枚金币。变量名可以由字母、数字和下划线字符(_)组成,但是不能由数字开头。从一个字母(如a)到长长的句子都可以用来做变量名(变量名不能包含空格,所以要用下划线来分隔单词)。有些时候,如果你要快速地做一些事情,那么短一点的变量名最好。选择什么样的名字取决于你需要让这个变量名有多么大的含意。
现在你知道如何创建变量了,让我们看看如何使用它们。
还记得之前的那个算式吗?如果你能用地下室里你爷爷的疯狂发明像变戏法般地创造出新金币来,那么计算在一年后你会有多少金币的算式是这样的:
>>> 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
当然,用变量来做这样简单的计算时,它的用处仍然很有限。到现在我们还没见过变量真正大展拳脚,只要记住变量就是一种给事物加标签的方法,我们以后知道怎么使用它就可以了。
在这一章里,你学到了如何用Python操作符来做简单计算以及如何用括号来控制Python计算式中各部分的顺序。我们还创建了变量来给数值加上标签并在计算中使用这些变量。