Python零基础入门学习02:Python基本数据类型:数字类型

:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性。

Python有三种不同的数字类型:整数(int),浮点数(float)和复数(complex)。 值得注意的是,还有一种特殊的数字类型包含在整数int类型里,那就是布尔类型(bool)。

布尔类型虽然是整数类型的子类型,但是非常特殊,将另外单独讲。

1. 整数类型-int

Python中的整数int具有无限的精度。一般我们说到的整数都是指十进制整数,但Python中还有其它进制的整数,如二进制整数、八进制整数、十六进制整数等;除了十进制整数可以直接表示外,二进制、八进制和十六进制都需要在数值前面加上相应的前缀来表示。

十进制demical——无前缀。如338。

二进制binary——0b或0B前缀,如0b1011001。

八进制octal——0o或0O前缀,如0o557。

十六进制hexadecimal——0x或0X前缀,如0x16f。

十进制可以用int()、bin()、oct()和hex()等内置函数,实现与二进制、八进制和十六进制这些不同进制的整数的直接相互转换。

a = 16 # a是一个十进制整数。

bin(a)  # 十进制整数转换为二进制。
Out[39]: '0b10000'

oct(a) # 十进制转换成八进制。
Out[40]: '0o20'

hex(a) # 十进制转换成十六进制。
Out[41]: '0x10'

更多进制转换的内容请参阅此前的文章:Python随笔3:二进制、八进制、十六进制与十进制整数之间的转换。

2. 浮点类型-float

浮点数通常使用C中的double来实现。与数学中实数的概念一致,是带有小数的数字。

IEEE规定,浮点数受到17位有效数字的限制,超过的要用科学记数法来表示。

由于计算机实现原理的先天不足,浮点数在计算中存储的只是近似值。浮点数的这个劣势也使得它不适合用作字典数据类型中的键。

浮点数使用科学计数法表示

使用字母e或E作为幂的符号,以10为基数,格式如下:

e 表示a*10^b。

例如:4.3e-3的值为0.0043, 9.65E5的值为960000,0。

3. 复数类型-complex

与数学不同,在Python编程中,不用i,而用j或J来定义-1的平方根,以此为基础,构建数学体系。如在Python里,具体的复数表示是1 + 3j,而不是1 + 3i。

此外,跟在数学中一样,在Python中,复数只能作相等比较,不能作大小比较。

a + bj被称为复数,其中,a是实部,b是虚部。

对于复数z = 1 + 2j而言,z.real可以获得实部,z.imag可以获得虚部。这里要强调的是,无论实部、虚部是数学中的整数还是小数,在Python中,统一都是浮点数float类型,而不是整数int类型;换句话说,z.real、z.imag均为浮点数,而不是整数。

c1 = 1 + 2j

c1.imag  #提取复数c1的虚部。
Out[15]: 2.0  # 虚部为浮点数。

c1.real  #提取复数c1的实部。
Out[16]: 1.0  # 实部为浮点数。

c2 = complex(1, 2)  #构建一个实部的值为1,虚部的值为2的复数。

c2
Out[24]: (1+2j)
4. 不同类型的数值之间的混合运算

不同类型之间的数值可以进行混合运算,生成结果为范围最宽的类型。

int < float < complex。

以上最前面的最窄,最后的最宽。如下例所示:

i = 7

f = 0.8

c = 1 + 9j

i + f + c
Out[28]: (8.8+9j)  # 混合运算的结果是范围最宽的数字类型——复数。

虽然数值类型不同,但它们的“值”可以相等。如下例所示:

i = 7

f = 7.00

c = 7.0 + 0J

i == f == c
Out[32]: True  # True表明三种数字类型的“值”是相等的。
5. 数值运算的常用函数

数值运算常用到以下函数:

abs():绝对值函数。如果运算对象是int或float,是计算绝对值;如果运算对象是复数,则计算复数的模长。

divmod(x, y):商余函数,计算x//y同时输出商和余数(x//y, x%y),以元组形式出现(商, 余数)。

pow(x, y):幂函数,求x的y次幂。

max()、min(),最大值最小值函数。

round(),对浮点数进行四舍五入操作。由于浮点数在计算机的存储存在误差,因此有时运算结果可能令人意外,如round(0.5) = 0。

int()、float()、complex()等函数,将不同的数字类型转换为相应的数字类型。

abs(-9.1)
Out[33]: 9.1

abs(3 + 4J)  # 计算复数的模长。
Out[34]: 5.0

divmod(10, 3)
Out[35]: (3, 1)  # 10除以3,商为3,余数为1。

pow(3, 2)
Out[36]: 9  # 3的2次方为9。

max(3, 5, 4, 2)  
Out[37]: 5  # 求几个数中的最大值。

min(3, 5, 4, 2)
Out[38]: 2  # 求几个数中的最小值。

round(1.5)
Out[39]: 2  # 对1.5进行四舍五入。

a = round(0.5)  # 四舍五入有失灵的情况。

a
Out[41]: 0

int(0.5)  # 取0.5的整数部分。
Out[42]: 0

int(1.2)  # 取1.2的整数部分。
Out[43]: 1

float(2)  # 把int类型2转换为float类型。
Out[44]: 2.0

complex(3.5)  # 把float类型3.5转换为复数类型。
Out[45]: (3.5+0j)

complex(9)  # 把int类型9转换为复数类型。
Out[46]: (9+0j)

6. range函数

range()函数

函数原型:range([start=0], stop, [stepSize=1])。其范围是整数序列(..., -1000000,..., 0,1,2,3,...)。

参数含义:

start:计数从start开始,默认是从0开始。例如range(5)等价于range(0, 5)。可选参数。

stop:计数到end结束,但不包括end。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5 。必选参数。

stepSize:每次跳跃的间距,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)。可选参数。

range([start], stop, [stepSize])中的三个参数都必须是int型,当时float型时,系统会报错。
,range()函数是可以反向遍历的。当stepSize为负整数时,range()就反向遍历了。如:

for i in range(4,-1,-1):
    print(i, end=' ')

<<<4 3 2 1 0

To be continued.

你可能感兴趣的:(Python零基础入门学习02:Python基本数据类型:数字类型)