首页 » 父与子的编程之旅:与小卡特一起学Python » 父与子的编程之旅:与小卡特一起学Python全文在线阅读

《父与子的编程之旅:与小卡特一起学Python》3.1 四大基本运算

关灯直达底部

在第 1 章中我们已经看到 Python 可以做一些数学运算:使用加号(+)完成加法,另外使用星号(*)完成乘法。

如你所料,Python 使用连字号(-)(也称为减号)来做减法:

>>> print 8 - 53  

由于计算机键盘上没有除号(÷),所以所有程序都使用前斜杠(/)表示除法。

>>> print 6/23  

这是对的。不过有时 Python 做除法时会得到意外的结果:

>>> print 3/21  

咦?我还以为计算机精通数学计算呢,原来不过如此!所有人都知道

3 / 2 = 1.5  

这到底怎么回事?

嗯,虽然看起来好像很傻,其实 Python 确实想表现得聪明一些。要解释这个问题,你要知道整数和小数。如果你还不知道它们的区别,先来看看术语箱中简单的解释。

术语箱

整数(integer)就是我们平常数数时所说的数,如 1、2、3,另外还包括 0 和负数,如 -1、-2、-3。

小数(decimal number)也称为实数(real number),这些数有小数点而且后面有小数位,如 1.25、0.3752 和 -101.2。

在计算机编程中,小数也称为浮点数(floating-point number,有时简写为 floats,或者如果只有一个浮点数,就简写为 float)。这是因为小数点会“浮动”。0.00123456 或 12345.6 都是浮点数。

因为你输入的 3 和 2 都是整数,所以 Python 认为你同样想要整数作为答案。所以它会把答案 1.5 取整为比它小且最接近的整数,也就是 1。换句话说,Python 完成了不带余数的除法。

要解决这个问题,可以这样试试看:

>>> print 3.0 / 21.5  

这样就好多了!如果把两个数中的任何一个作为小数输入,Python 就会知道你想在答案中保留小数部分。

整除

在 Python 2 中,做除法的方式称为“整除”(floor pision)。但 Python 3 的工作方式不一样,在 Python 3 中,如果你使用常规的除法操作符(前斜杠“/”),则做的是常规除法,而不是整除。

>>> print 3/21.5  

要在 Python 3 中做整除,需要使用两个前斜杠(//):

>>> print 3//21  

这是 Python 2 和 Python 3 最显著的区别之一,也是导致很多 Python 2 程序与 Python 3 程序不兼容的原因。

 

切记!

要记住 Python 2 的这种整除行为。这很重要,很多 Python 程序员(包括我自己)都曾经因为忘记这一点犯过错。