
3.1.3 不同数据类型之间的运算法则
首先介绍Python的除法。传统的C/C++在整型除以整型时使用的是“截断式”除法,又称“下溢式”除法或者更直接地翻译为“地板除”,即直接舍去商的小数部分,留下一个整数作为最终结果,例如,5/2=2。Python与C/C++不同,它使用的是数学除法,即5/2=2.5。
其他的编程语言都没有像Python这样设定除法,这可能会使部分程序员不太适应。当然,数据科学者可能会欢呼雀跃,因为在处理数据时往往要遵循数学意义上的除法,这样就可以省去强制类型转换的步骤。
强制类型转换是指操作者强制将某种类型的数据转换为另一种类型的数据,而默认类型转换往往是两个不同类型的数据相加减、相乘除。总之,当两个不同类型的数据被放在一起运算时,只有将其中一个数据的类型转换为另一个数据的类型,才可以进行下一步操作。Python的默认类型转换的规则如图3-1所示。

图3-1 Python的默认类型转换的规则
Python的标准类型操作符中的逻辑运算使用“or”和“and”,其与C/C++中的“||”和“&&”的作用一样。例如,计算{a|1≤a≤10}∪{a|a≥15}的代码如下:

输出结果:

可以看到,在这个示例中使用了int()函数进行强制类型转换,如下所示。因为input()函数默认返回一个str字符串。

按Ctrl+Z快捷键在屏幕上显示的是^Z,按Ctrl+Z快捷键的作用是强制EOF,即强制终止某个程序,这里终止了循环输入数字程序,返回值是-1也说明了这一点,如下所示。

Python支持的单目操作符有正号(+)和负号(-);双目操作符有+、-、*、/、%、//和**,分别表示加、减、乘、数学意义上的除、求模运算、下溢式除法和乘方运算。求模运算即求余运算(c=a%b,即显示a除以b的余数c),但这并不是令人感到新奇的地方,因为这样的运算早在Java、C/C++中就有所定义。Python的新奇之处在于它的除法和乘方运算,先来看除法运算,示例如下:

输出结果:

可以看到,结果完全符合之前关于Python除法的介绍。下面来介绍乘方运算,乘方运算十分简明,a**b即是a^b的书写格式。示例如下:


输出结果:
