2.8 数值数据类型和运算符
关键点:Python中有两种数值类型(整数和浮点数)与+、-、、/、//、%和*一起工作。
储存在计算机中的信息通常被称为数据。这里有两种数值数据类型:整数和实数。整数类型Integer(简写作int)用于表示整数。实数型用于表示有小数部分的数字。在计算机中,这两种数据类型的存储方式不同。实数型表示为浮点数。我们怎样告知Python一个数字是整数还是浮点数呢?一个拥有小数点的数字即使小数部分为零也是浮点数。例如:1.0是浮点数,而1是整数。这两个数字在计算机里的存储方式不同。在程序设计术语表中,像1.0和1这样的数字被称为字面量。字面量是直接出现在程序中的常量值。
供数值数据类型使用的运算符包括标准的算术符号,如表2-1所示。操作数是被运算符操作的值。
+、-和*运算符都很直接明了,但是注意:运算符+和-既可以用于一元运算也可用于二元运算符。一元运算符只能有一个操作数,而二元运算符有两个操作数。例如:在-5中的-号是一元的,表示5的相反数,而它在4-5中是二元的,表示4减去5。
2.8.1 运算符/、//和**
运算符/执行浮点除法并产生一个浮点数结果。例如:
运算符//执行整数除法并产生一个整数结果,任何小数部分都会被舍掉。例如:
为了针对任意数字a与b计算ab(a的b次幂),你可以在Python中编写a**b。例如:
2.8.2 运算符%
众所周知,运算符%是一个求余或取模运算的运算符,即求出除法后的余数。左侧的操作数是被除数,而右侧的操作数是除数。因此,7%3结果是1,3%7结果是3,12%4结果是0,26%8结果是2而20%13结果是7。
在程序设计中求余运算符非常有用。例如:偶数%2总是0而奇数%2总是1。这样,你就可以用这个特性判断一个数字是奇数还是偶数。如果今天是星期六,那七天之后又是星期六。假设你和你的朋友十天后要见面。那么十天后是周几?你可以用下面的表达式算出是周二:
程序清单2-5给出将以秒计时的一段时间转换为用分和秒计时的程序。例如:500秒即是8分20秒。
程序清单2-5 DisplayTime.py
第2行读取一个整数seconds。第5行使用seconds//60获取分钟数。第6行(seconds%60)获得除去分钟后剩余的秒数。
2.8.3 科学记数法
浮点数可以用a×10b形式的科学记数法来编写。例如:123.456的科学记数法表示为1.234 56×102而0.0 123 456可以表示为1.234 56×10-2。Python使用特殊的语法来书写科学记数法的数字。例如:1.234 56×102被写作1.234 56E2或1.23456E+2,而1.234 56× 10-2被写作1.234 56E-2。字母E(或e)代表指数而且可以大写也可以小写。
注意:浮点型用于表示有小数点的数字。为什么它们叫浮点数呢?这些数字在内存中以科学记数法存储。当一个像50.534这样的数字被转换为科学记数法是5.0534E+1,它的小数点移动(浮动)到一个新位置。
警告:当一个变量被赋值一个太大的值而不能存入内存中。这会导致数据溢出。例如:执行下面的语句会导致溢出。
当一个浮点数太小(即太接近0)会导致下溢,而Python会将它近似为0。因此,你不需要关注下溢。
检查点
2.11 下面表达式的结果是什么?
表达式 结果 表达式 结果
2.12 如果今天是星期二,那100天后是星期几?
2.13 25/4的结果是多少?如果你希望结果是整数应该怎么改写?