Invent Your Own Computer Games with Python 翻译(二)交互式Shell

第二章 交互式Shell


本章涉及的主题:

  • 整数和浮点数
  • 表达式
  • 运算符
  • 表达式求值
  • 变量的存储值
  • 覆盖变量

我们开始编写计算机游戏之前,我们应该先学习一些基本的编程概念。这些概念是值,运算符,表达式和变量。我们不会在本章开始编程,但是知道这些概念和事物的名字,会让学习编程更容易。因为大多数编程是建立在由几个简单的概念结合在一起的基础上,整合成一个高级的程序。

让我们开始学习如何使用Python的交互式shell。


一些简单的数学的东西

在Windows上打开IDLE单击开始->程序->Python 3.1->IDLE(Python的GUI).打开IDLE,让我们用Python做一些简单的数学。交互式shell可以像计算器一样工作。例如:在shell中输入2 + 2,点击回车键。如图2-1,电脑会做出相应回应:4 ,2 + 2的和。


图2-1

正如你可以看到,我们可以把Python shell当一个计算器来使用。"+"的符号告诉计算机将数字2和2相加。数字相减使用"-",相乘使用一个星号(*),就像这样:

表2-1:
2 +2 加法
2-2 减法
2 * 2 乘法
2/2 除法

当以这种方式使用时, +,-,*,/,被称为运算符,因为它们告诉计算机,让它们周围的数字进行指定的操作.

整数和浮点数

在编程(也包括数学)中,如4,0,99,这类的数字,被称为整数。分数或小数(如3.5和42.1和5.0)不是整数。在Python中,5是一个整数,但是,如果我们写为5.0,它就不是一个整数。带小数点的数字被称为浮点数。在数学上,仍然认为5.0与5同样是整数,但在计算机编程中,计算机认为任何带小数点的数字不为整数。

表达式

尝试在shell中输入一些数学计算,在输入每一个算式之后都按下回车键:

2+2+2+2+2
8*6
10-5+6
2  +       2

如图2-2,是你在输入上述指令后得到的结果。


                               图2-2

这些数学计算,被称为表达式。计算机可以每秒解决数百万个这样的问题。表达式由运算符(数学符号)连接(数字)组合而成的。让我们了解究竟什么是值和运算符。

正如你可以看到在上面的例子中的最后一个表达式,你可以在运算符和数字之间输入任意数量的空格。(但是在行头不能键入空格)


图2-3:表达式是由值和运算符组合而成

数字是值的一种类型,而整数是数字的一种类型。整数是数字,但不是所有的数字都是整数。(例如,分数和小数,如2.5是数字但不是整数。)

就好像这猫是宠物中的一种,但并不是所有的宠物都是猫。有人可能有一只宠物狗或宠物寄居蟹。

一个表达式是由运算符(如*乘号)连接着值(例如,整数,如8和6)组合而成的。但是一个单一的值也被认为是一个表达式

在下一章中,我们将学习有关表达式中文本的处理。Python不只局限于数字,因为它不仅仅只是一个花哨的计算器!


表达式求值

当一台计算机计算表达式10 + 5,并得到值15时,我们认为表达式已经被计算。计算表达式使表达式使成为一个单一的值,就像解决一个数学问题,得到一个数字:问题答案一样。

表达式10 + 5,10 + 3 + 2有相同的值,因为它们的计算结果都为15即使单一的值也被认为是一个表达式,表达式15计算结果是值15

但是,如果你只在shell中需要输入5 +,你会得到一个错误信息。

>>> 5 +
SyntaxError: invalid syntax

这个错误的发生,是因为5 +并不是表达式。表达式是由运算符将值连接而成的,但是在Python中“+”这个运算符应该连接两个东西。我们只给了它一个。这就是为什么会出现错误讯息的原因。语法错误意味着计算机不能明白你给它的错误指令。如果你输入它难以明白的指令,Python会始终显示一个错误信息。

这似乎并不重要,但很多计算机编程不仅仅是要告诉计算机做什么,更重要的是要确切地告诉计算机怎么做。


变量的存储值

当我们编写程序的时候,往往会想保存表达式得出的值,这样我们就可以在后面的程序中使用它们。我们可以将值存储在变量中。

可以把变量想象成一个可以容纳值的盒子。你可以用"=",将值存在变量中(称为赋值运算符)。例如,将值 15 存入一个名叫"spam"的变量中 ,在shell中输入spam = 15

>>> spam = 15
>>>

你可以想象变量就像一个盒子里面存着一个值15(如图2-4所示)。变量名“spam”就是包装盒上的标签,所赋的值就像放在箱子内的小纸条.

               图2-4

当你输入命令后按下Enter键,你会发现只是跳到的下一行。只要没有看到错误信息,你可以认为该指令已经成功运行了。>>> 提示你可以输入下一条指令了。


这个指令(spam = 15 )(称为一个赋值语句)创建变量spam,并将值15赋给它。它不同于表达式,语句是一种不会得到任何值的指令,这就是为什么shell中没有在下一行得到值的原因。

你可能会分不清哪些指令是表达式,哪些是语句。其实我们只要记住,如果指令计算结果为单个值,它是一个表达式。指反之,那么这是一个语句。

赋值语句的写法,一个变量后面跟着"=",再紧接着跟着一个表达式。变量里存着的是表达式的计算结果。15本身也是一个表达式。由单个值组成的表达式很容易计算,因为就是它本身。例如,表达式15的计算结果就是15

记住,变量存储的是值,而不是一个表达式。例如,如果我们有这样一个语句,spam= 10 + 510 + 5先被计算得到15,然后才被存储到变量spam中。

只有在你第一次使用赋值语句将值存在一个变量中的时候,Python会创建该变量。但之后继续赋值给该变量,并不会创建一个相同的变量,只会将存储在该变量中的原来的值替换掉。


现在,让我们来看看,如果我们已经正确的创建了变量。输入变量名到shell中,我们可以看到变量spam中存了什么值.

>>> spam = 15
>>> spam
15
>>>

这里有一个有趣的地方。如果我们在shell中输入spam + 5,我们得到了一个值为20的整数,就像这样:

>>> spam = 15
>>> spam + 5
20
>>>

这似乎有些奇怪,但它是有道理的,是否记得,我们将spam的值设为了15,其实spam +5 就等同于 15 + 5

如果你在变量没被定义(创建)之前就想使用它,Python会报错,因为没有这样的变量存在。如果输入错误的变量名同样也会报错。


我们可以用另一个赋值语句来改变原本存储在变量中的值。例如,尝试以下操作:

>>> spam = 15
>>> spam + 5
20
>>> spam = 3
>>> spam + 5
8
>>>

首先我们输入spam + 5,表达式的计算结果为20,这是因为我们将值15存入了变量spam但是,当我们输入 spam= 3时,15将会被替换或覆盖,变为3现在,我们输入 spam + 5,表达式的计算结果为8,因为现在spam的值,是3。


要知道变量当前的值,只要输入在shell中输入变量名。

记住,我们操作变量时,其实都是在操作赋给变量的值。


甚至我们可以用spam的值,重新赋一个全新的值给spam:

>>> spam = 15
>>> spam = spam + 5
20
>>>

赋值语句 spam = spam + 5 可以解释为,“ 变量spam的新值等于spam的原值加5“ 记住,"="右边表达式所得到的计算结果会赋值给在左边的变量


我们还可以多次给spam加上5:

>>> spam = 15
>>> spam = spam + 5
>>> spam = spam + 5
>>> spam = spam + 5
>>> spam
30
>>>


使用一个以上的变量

当我们编程的时候,我们并不想总是被限制只有一个变量。通常情况下,我们需要使用多个变量。

例如, 让我们分配两个不同的值给变量fizz和eggs,就像这样:

>>> fizz = 10
>>> eggs = 15

现在变量fizz中有值10,eggs中有15.


图2-5

让我们试着指定新值给变量spam。在shell中输入spam = fizz + eggs可以看到spam被赋予了一个新的值。你能猜到新值是多少么?

>>> fizz = 10
>>> eggs = 15
>>> spam = fizz + eggs
>>> spam
25
>>>

现在spam中的值是25,因为我们将变量fizz和eggs中的值相加赋给了它.


覆盖变量

更改变量里面存储的值是很容易的。只要给同一个变量执行其他的赋值语句就行了。在shell中输入以下代码,看看会发生什么:

>>> spam = 42
>>> print(spam)
42
>>> spam = 'Hello'
>>> print(spam)
Hello

最初,变量spam被整数42所赋值。这就是为什么第一次print(spam)打印出42。但是,当我们spam='Hello'的时候值42从变量中被抛出和遗忘,变量spam被新的字符串“Hello”所赋值。


在变量中更换一个新的值叫做覆盖值。重点是要知道,旧值将会被永久遗忘。如果你想记住这个旧值并在之后的程序中使用它,你可以在它被覆盖前,将它赋值给一个全新的变量.

>>> spam = 42
>>> print(spam)
42
>>> oldSpam = spam
>>> spam = 'Hello'
>>> print(spam)
Hello
>>> print(oldSpam)
42

在上面的例子中,覆盖spam中的值之前,我们将该值复制给了变量oldSpam。这时,spam和oldSpam存储值都是42。在下一行中,字符串"Hello"被赋值给spam,但在oldSpam并未改变


总结

在本章中,你学会了编写Python指令的基本知识。Python需要你用严格的方式来告诉它到底该怎么做,因为电脑不具备常识,只能理解非常简单的指令。您已经了解到,Python可以计算表达式,以及表达式是由值(如25)和运算符(如+)组合而成的。你还了解到,你可以在变量里存储值,让你的程序能够记住它们,以便在以后使用它们。

在下一章中,我们将复习更多的基本的概念,你将会开始写你的第一个程序!


----------------------------------------我是好辛苦的分割线--------------------------------------------

终于完成第二章的好感动,其实有点基础的童鞋,都可以跳过前几章~~~~~哭~~~~~~

求安慰呀~~~~~~






评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值