1.5 温习小学数学——使用Python进行运算
计算机最初的设计目的是帮助人们进行计算。人脑的优势在于逻辑思维,若让计算机处理复杂的人际逻辑,截至目前,计算机还做不到。但是计算机在运算速度上超越人脑很多个数量级(这里不包括人类中的极少数天才)。对于大量重复的计算,计算机十分在行。下面使用Python帮助我们做一些小学数学题。
1.5.1 数字之间的加、减、乘、除运算
Python中的四则运算
加、减、乘、除是基础的四则运算,也是我们开始学习数学时接触的基础运算。在Python中使用符号“+”进行相加运算。例如,在IDLE集成环境中输入5+5之后按回车键,效果如图1-25所示。
图1-25 Python中的加法运算
可以看到,Python十分轻松地帮我们计算出了结果10。在Python中使用符号“-”进行减法运算,如图1-26所示。
图1-26 Python中的减法运算
在Python中使用符号“*”进行乘法运算,如图1-27所示。
图1-27 Python中的乘法运算
在Python中使用符号“/”进行除法运算,如图1-28所示。
图1-28 Python中的除法运算
当然,你也可以像使用计算器那样让Python做复合的四则运算,如图1-29所示。
图1-29 Python中的四则运算
你是不是有些疑惑,为什么运算的结果不是20,而是37呢?别忘了,在数学运算中是有运算法则的,最熟悉的口号就是“先乘除,后加减”。在Python中也是这样,整体的运算顺序是从左向右,但是如果有乘除运算,就会优先于加减运算进行计算。
帮你解惑
其实,在Python中也可以使用小括号来强制提高加减运算的优先级,除了基础的四则运算外,Python中还提供了丰富的数学运算方法,后面的章节会详细介绍。
1.5.2 浮点数的运算
奇怪的浮点数
浮点数,你可能第一次听说这个名词,它还有一个容易理解的同义词“小数”。在计算机中,处理小数点位置有两种方式,一种是定点;另一种是浮点。所谓定点,就是在计算机存储小数时,小数点永远在固定的位置上。要知道,计算机中数据的存储都是采用二进制,后面会详细解释有关二进制的知识。所谓浮点,即小数点的位置可以浮动,这样设计的优势是增加灵活性,在二进制位数一定的情况下,浮点数表示的范围更宽,精度更准。
在Python中,整数和小数虽然都是数值,数据类型却不同。使用type()函数可以获取某个数据的类型,如图1-30所示。
图1-30 获取数据的类型
从图1-30可以看到,分别对数据4和4.5进行类型获取,一个获取了int类型,另一个获取了float类型,int表示的是整型数据,float表示的是浮点型数据。在Python中,当整型数据与浮点型数据进行运算时,结果会被转换成浮点型数据,如图1-31所示。
图1-31 整型数据与浮点型数据混合运算
截至目前,浮点型数据和整型数据除了类型不同外,并没有其他差异。下面我们来看一些Python中的奇葩现象。在集成环境中计算0.1+0.2的值,效果如图1-32所示。
图1-32 浮点数运算结果
有些惊讶吧,0.1+0.2这么简单的问题,计算机竟然计算“错了”。其实计算机没有计算错,而是二进制惹的祸。上面使用的无论是整数还是小数,其实都是十进制的,十进制小数并不一定都能转换成精确的二进制小数。例如,0.1转换成二进制后是一个无限循环的小数,计算机只能尽最大努力去保存它,这是一个近似的值,当计算完成再转换十进制时,就会出现如图1-32所示的情况。
其实,你不需要太纠结浮点数,在实际的应用中一般只需要确定7位精确小数位即可。
1.5.3 字符串的运算
字符串间运算
数值的运算很好理解,在Python中,字符串也是可以进行运算的。使用符号“+”可以将字符串进行拼接,如图1-33所示。
图1-33 字符串的拼接
在字符串运算中,“加”操作通常被称为字符串的拼接。但是需要注意,正如不是所有的词汇都有反义词,也不是所有的运算都有逆运算。在Python中,字符串之间只能使用“+”进行拼接运算,不能使用“-”进行运算,如图1-34所示。
图1-34 字符串之间不能使用“-”运算
帮你解惑
如图1-34所示,在这里又看到了一个新的错误类型“unsupported operand type(s)for-:'str'and'str'”。这个错误的意思是不支持在字符串与字符串之间进行“-”操作。
在数学中,乘法是加法的一种延伸,在Python中也是这样,你可以使用“*”运算符将一个字符串重复多次,如图1-35所示。
图1-35 字符串的“*”运算
同样,“/”除法运算在字符串间也是不适用的。
字符串可以直接进行加法和乘法运算是Python语言的一大特点。在Python社区,最流行的口号莫过于“人生苦短,我学Python”,其想表达的就是Python这种简单、快速的特点。