
2.3 数字数据类型
数字(Number)类型是Python的基本数据类型之一,常见的数字类型有整型(int)、浮点型(float)及布尔型(bool)。
2.3.1 整型数进制转换
整型数据与数学中整数的概念是一致的,如1000、0、-500等。整数可以是0、正整数或负整数。在Python中整型类型可以表示的范围是有限的,它和机器支持的内存大小以及机器的字长有关。例如32位的计算机上的整型表示为32位,其数据范围可以是-231~231-1;而在64位的计算机上的整型表示为64位,其数据范围是-263~263-1。以下代码声明了两个整型数据的变量:

整型类型共有4种进制表示:十进制、二进制、八进制以及十六进制,默认情况下,整型采用的是十进制,其他进制则需要加上引到符号,其引到符号如下:
(1)十进制。默认为十进制,使用0~9共10个数字表示,使用int()可以将以上各类数转换为十进制数。
(2)二进制。以0b或0B开头,使用0~1共2个数字表示,例如十进制139用二进制表示为0b10001011,使用bin()可以将一个整数转换为二进制。
(3)八进制。以0o或0O开头,使用0~7共8个数字表示,例如十进制139用八进制表示为0o123,使用oct()可以将一个整数转换为八进制。
(4)十六进制。以0x或0X开头,使用0~9及A~F共16个数字和字母表示,例如十进制139用十六进制表示为0x8b,使用hex()可以将一个整数转换为十六进制。
【任务 2-6】分别声明一个二进制、八进制和十六进制整型数,并将它们转换为十进制整型数,使用print()函数输出显示;然后声明一个十进制整型数,将其转换为二进制、八进制和十六进制整型数,使用print()函数输出显示。

代码说明:
第1行代码——声明一个二进制整型数赋给变量a。
第2行代码——声明一个八进制整型数赋给变量b。
第3行代码——声明输入一个十六进制整型数赋给变量c。
第4~6行代码——分别将a、b、c转换为十进制整型数并输出。
第7行代码——声明一个十进制整型数赋给变量x。
第8~10行代码——将x分别转换为二进制、八进制和十六进制整型数并输出。
运行程序,其输出结果如下:

2.3.2 浮点型数温度转换
浮点型数据与数学中实数的概念是一致的,都是表示带有小数的数值。Python语言要求所有的浮点数必须带有小数,但小数部分也可以是0,这种设计有效地区分了整型数据与浮点型数据两种不同的类型。
在表示方面,浮点型数据有两种表示方法:十进制表示和科学计数表示法。十进制表示与数学中实数的表示方法一致,如1.25、-3.96等。在Python中小数点后也可以不带数字,如31.表示31.0。
科学计数法以e(或E)为底表示以10为底的指数形式,e之前为数字部分,e之后为指数部分,且两部分必须同时出现,而且指数部分必须是整数。例如1.2e3、3.5e-12分别表示1.2×103与3.5×10-12。
Python中的浮点数的数值范围和小数精度受到不同的计算机系统限制,使用sys.float_info可以详细列出解释器所运行系统的浮点数的各项参数,例如:

上述代码输出了浮点数所表示的最大值(max)、最大值的幂次(max_exp)、最小值(min)及最小值的幂次(min_exp)等信息。
【任务 2-7】输入摄氏温度值C,输出华氏温度值F。摄氏温度与华氏温度的转换关系为:


代码说明:
第1行代码——输入摄氏温度并转化为数值。
第2行代码——根据公式计算华氏温度。
第3行代码——使用print()函数输出格式化后的结果。
运行程序,输入摄氏温度,输出华氏温度,其输出结果如下:

2.3.3 构造布尔型变量
布尔型是计算机中最基本的类型,其只有True(正确)和False(错误)两种值。Python把1和其他数值及非空字符串都看成True,把0、空字符串"和None看成False。
【任务 2-8】构造布尔型变量,并输出True或False。

代码说明:
第1~2行代码——将变量a赋值为True并打印。
第3~4行代码——将变量b赋值为False并打印。
第5~8行代码——将c1、c2和c3分别用布尔值0、空字符和[]赋值,并输出结果。
运行程序,其输出结果如下:

2.3.4 不同数字类型的转换
在Python中,不同的数字类型之间可以相互转换,例如两个整型数进行除法运算,其运算结果很可能包含浮点型数,通过内置的数字类型转换函数可以显式地将运算结果转换为整型,需要注意的是,浮点型数转换为整数时,小数部分将被舍弃。Python提供了多个函数对数字类型进行转换,如表2-6所示。
表2-6 Python类型转换函数

【任务 2-9】编程实现定义一个整型数,分别将其转换为浮点型数据和布尔型数据输出。

代码说明:
第1行代码——定义一个整型变量a,赋值为78。
第2行代码——将变量a转换为浮点型数据,并输出结果。
第3行代码——将变量a转换为布尔型数据,并输出结果。
运行程序,其输出结果如下:
