交互式Python解释器可以当作强大的计算器使用,试试以下例子:
>>> 2 + 2
解释器会得出答案为4。这好像不是很难,那么看看下面这个
>>> 53672 + 235253
288925
仍然没什么感觉?诚然,以上是非常普通的功能,(假定读者曾经用过计算 器,知道1+2*3和(1+2)*3的区别。)在绝大多数情况下,常用算术运算符的功 能和计算器的相同。这里有个潜在的陷阱,就是整数除法(在3.0版本之前的Python是这样的)。
>>> 1/2
0
发生了什么?一个整数(无小数部分的数)被另外一个整数除,计算结果的小数部分被截取了,只留下整数部分。有些时候,这个功能很有用,但通常人们只需要普通的除法。那么要怎么做呢?有两个有效的解决方案,要么用实数(包含小数点的数)而不是整数进行运算,要么让Python改变除法的执行方式。
实数在Python中被称为浮点数(Float,或者Float-point Number),如果参与除法的两个数中有一个为浮点数,则运算结果亦为浮点数:
>>> 1.0 / 2.0
0.5
>>> 1 / 2.0
0.5
>>> 1 / 2.
0.5
如果希望Python只执行普通的除法,那么可以在程序(后面会讲到编写完整的程序)前加上以下语句,或者直接在解释器里面执行它:
>>> from __future__ import division
还有另外一个方法,如果通过命令行(比如在Linux系统上)运行Python,可以使用命令开关-Qnew,使用上述两种方法,就可以只执行普通的除法运算:
>>> 1 / 2
0.5
当然,单斜线不再用作前面提到的整除了,但是Python提供了另外一个用于实现整除的操作——双斜线:
>>> 1 // 2
0
就算是浮点数,双斜线也会执行整除:
>>> 1.0 // 2.0
0.0
1.9.2节会对_future_模块进行深入的介绍。
现在,已经了解基本的算术运算发了(加、减、乘、除)。除此之外,还有一个非常有用的运算符:
>>> 1 % 2
1
这就是取余(模除)运算符——x % y的结果为x除以y的余数。下面是另外一个例子:
>>> 10 / 3
3
>>> 10 % 3
1
>>> 9 / 3
3
>>> 2.75 % 0.5
0.25
这里10/3得3是因为结果被向下取整了。而3x3=9,所以相应的余数就是1了。在计算9/3时,结果就是3,没有小数部分可供截取,因此,余数就是0了。如果要进行一些类似本章前面菜谱所述“每10分钟”检查一次的操作,那么取余运算就非常有用了,直接检查时间%10结果是否为0即可。(关于如果做此事的描述,参看本章后面的“管窥:if语句”部分。)从上述最后一个例子可以看到,取余运算符对浮点数也同样适用。
最后一个运算符就是幂(乘方)运算符:
>>> 2 ** 3
8
>>> -3 ** 2
-9
>>> (-3) ** 2
9
注意,幂运算符比取反(一元减运算符)的优先级要高,所以-3*2等同于-(3*2)。如果想计算(-3) ** 2,就需要显式说明。