首页 » 与孩子一起学编程 » 与孩子一起学编程全文在线阅读

《与孩子一起学编程》2.2 名字

关灯直达底部

再回到 Python Shell 窗口。(如果完成第 1 章中的例子后关闭了 IDLE,现在要再打开它。)

在提示符后面键入:

>>> Teacher = /"Mr. Morton/">>> print Teacher

(记住,>>> 是 Python 显示的提示符。你只需要键入它后面的内容,然后按回车。)你会看到下面的结果:

Mr. Morton>>>

你刚才创建了一个由字母 /"Mr. Morton/" 组成的东西,并且给它起了一个名字 Teacher

这里的等号(=)告诉 Python 要指派(assign)或者“让……等于……”。这里把名字 Teacher 指派给字母序列 /"Mr.Morton/"

在计算机内存中的某个位置,字母序列 /"Mr.Morton/" 已经存在。你不需要准确地知道它们到底在哪里。只需要告诉 Python 这个字母序列的名字是 Teacher,从现在开始就要通过这个名字来引用这个字母序列。名字就像标签或者不干胶便条,你可以用它来标识一些东西。

在一个东西两边加上引号时,Python 会按字面来处理它。它会把引号里的内容原样打印出来。如果没有加引号, Python 就必须明确这个东西到底是什么。这可能是数字(如 5)、表达式(比如 5 + 3)或者名字(如 Teacher)。由于我们创建了名字 Teacher,所以 Python 会打印这个名字里的内容,这正是字母序列 /"Mr. Morton/"

这就像有人在说,“请写下你的地址”,你肯定不会这样写(如右图):

(不过,也许 Carter 会这么干,因为他总是喜欢调皮捣蛋……)

你可能会这样写:

如果写成“你的地址”,就是在按字面看这句话。除非加上引号,否则 Python 不会按字面来处理。下面来看另一个例子:

>>> print /"53 + 28/"53 + 28>>> print 53 + 2881

有引号时,Python 会直接照你所说显示输出:53 + 28。

没有引号时,Python 把 53 + 28 处理为一个算术表达式,它会计算这个表达式。在这里,这是一个两数相加的表达式,所以 Python 会给出它们的和。

术语箱
算术表达式(arithmetic expression)是数字和符号的一个组合,Python 可以算出它的值。
计算(evaluate)就表示“算出……的值”。

Python 要确定需要多少内存来存储这些字母,以及要使用哪一部分内存。要获取信息(取回信息),只需要再使用同样的名字。我们使用 print 关键字并提供名字,这会在屏幕上显示具体的内容(如数字或文本)。

一种简洁的存储方法
Python 中使用名字就像是走进一家干洗店……。你的衣服挂在晾衣架上,上面附着你的名字,这些衣服都挂在一个巨大的旋转吊架上。你回来取衣服时,并不需要知道它们存放在这个大型吊架的具体哪个位置。只需要提供你的名字,干洗店的人就会 把衣服交还给你。实际上,你的衣服可能并不在原先所放的位置。不过干洗店的人会为你记录衣服的位置。要取回你的衣服,只需要提供你的名字。
变量也一样。你不需要准确地知道信息存储在内存中的哪个位置。只需要记住存储变量时所用的名字,再使用这个名字就可以了。

除了字母,还可以为其他内容创建变量。可以对数值指定名字。应该还记得前 面的例子:

>>> 5 + 38

下面用变量来完成这个例子:

>>> First = 5>>> Second = 3>>> print First + Second8

在这里,我们创建了两个名字 FirstSecond。数字 5 赋给 First,数字 3 赋给 Second。然后用 print 把这两个数的和打印出来。下面是完成这个例子的另一种做法。你可以试试看:

>>> Third = First + Second>>> Third8

注意这里的做法。在交互模式中,只需键入变量名就可以显示这个变量的值,而不必使用 print。(不过程序中可不行。)

在这个例子中,并没有在 print 指令中求和,而是先取 First 的值和 Second 的值,将二者相加,创建一个新的值,名为 ThirdThirdFirstSecond 的和。

同一个东西可以有多个名字,可以在交互模式中试试这个指令:

>>> MyTeacher = /"Mrs. Goodyear/">>> YourTeacher = MyTeacher>>> MyTeacher/"Mrs. Goodyear/">>> YourTeacher/"Mrs. Goodyear/"

这就像在同一个东西上贴两个标签。一个标签写着 YourTeacher ,另一个标签写着 MyTeacher ,不过它们都贴在 /"Mrs.Goodyear/" 上。

Carter,这个问题问得好。答案是:不会。实际上,这会创建一个新的东西 /"Mrs. Tysick/"。标签 MyTeacher 会从 /"Mrs. Goodyear/" 上撕掉,贴到 /"Mrs. Tysick/" 上。你仍然有两个不同的名字(两个标签),不过,现在它们分别贴在两个不同的东西上,而不再贴在同一个东西上了。