背景
对于很多 Python 初学者来说,搞懂我们每个数据的结构与作用是一件非常困难的事。
因此了解我们程序中各个基本类型的结构,表现方式,使用方法与应用是一件非常有必要的事。本文致力通过简单明了的语言来阐述基本类型数字的相关信息
介绍
数字又称Number,是 Python 中最常见的基本类型之一,在 python,数字类型有以下三种
- 整数(int) 通常被称为整型数或整数,由正整数,零和负整数组成
- 浮点数(float) 通常由整数部分和小数部分组成,同时也可以使用科学计数法表示
- 复数(complex) 复数由实数部分和虚数部分组成
整数
和数学中的整数概念一样,我们python中的整数是由正整数,零和负整数组成的集合,用integer的简写int表示。与此同时整数有四种进制表现方式二进制、八进制、十进制、十六进制,如下表所示
进制 | 引导符 | 描述 | 备注 |
---|---|---|---|
二进制 | 0b或0B | 由字符0和1组成的一串数字 | 2 -> 0b10 |
八进制 | 0o或0O | 由字符0到7组成的一串数字 | 9 - > 0o11 |
十进制 | 无 | 由字符0到9组成的一串数字 | 无 |
十六进制 | 0x或0X | 由字符0到9,a到f(不分大小写)组成 | 15 -> 0xf |
与其它计算机语言不同,在 python 中整数的取值范围没有限制,仅受限于计算机的内存大小
进制转换
二进制 | 八进制 | 十进制 | 十六进制 | |
---|---|---|---|---|
二进制 | - | bin(x, 8) | bin(x, 10) | bin(x, 16) |
八进制 | otc(x, 2) | - | otc(x, 10) | otc(x, 16) |
十进制 | int(x, 2) | int(x, 8) | - | int(x, 16) |
十六进制 | hex(x, 2) | hex(x, 8) | hex(x, 10) | - |
整数的创建
在python中使用int()
可以创建一个值为0的整数,我们也可以在等号右边直接输入0到9任意的数字组合即可赋值整数给变量,如下方代码所示
num = int()
print(num)
print(type(num))
# 输出:
# 0
# <class 'int'>
num = 10
print(num)
print(type(num))
# 输出:
# 10
# <class 'int'>
浮点数
在python中浮点数和数学中的小数是同一种东西,用float表示,浮点数有两种赋值方法:正常小数赋值和科学技术法赋值。如下方代码所示
# 正常小数赋值
num = 0.0006606
print(num)
print(type(num))
# 输出:
# 0.0006606
# <class 'float'>
# 科学计数法赋值
num = 6.606e-4
print(num)
print(type(num))
# 输出:
# 0.0006606
# <class 'float'>
需要注意,在python中浮点数是有精度的,且通常精度有损失,这是由于浮点数是使用二进制计算导致的。如下方代码所示
print(0.3-0.2)
print(0.3-0.2==0.1)
# 输出:
# 0.09999999999999998
# False
如果读者对于python的精度损失感到好奇的话,可以阅读文章:
复数
同整数浮点数一样,python中复数也与数学中的复数概念一致,用英文complex表示。与数学中不同的是,数学中虚部用字母i
表示,而python中虚部用字母j
或J
表示。如下方代码所示
num = 1 + 2j
print(num)
print(type(num))
# 输出:
# (1+2j)
# <class 'complex'>
注:复数的实部和虚部都是由浮点数组成的
获取实部
复数可以通过complex.real
获取它的实部,如下方代码所示
num = 1 + 2j
print(num.real)
# 输出:
# 1.0
获取虚部
复数可以通过complex.imag
获取它的虚部,如下方代码缩回
num = 1 + 2j
print(num.imag)
# 输出:
# 2.0
数字类型转换
有些时候我们会遇到数字是不同类型的情况,我们需要将它们转换成一致的类型才能更好的计算,python 为我们提供了如下几种方法来进行类型转换
- int(x),将x转换为一个整数(x为字符串整数或其他类型的数字)
num1 = 1.2
num2 = int(num1)
print(num2)
print(type(num2))
# 输出:
# 1
# <class 'int'>
- float(x),将x转换为一个浮点数
num1 = 1
num2 = float(num1)
print(num2)
print(type(num2))
# 输出:
# 1.0
# <class 'float'>
- complex(x),将x转换到一个复数,实数部分为x,虚数部分为0
num1 = 1
num2 = complex(num1)
print(num2)
print(type(num2))
# 输出:
# (1+0j)
# <class 'complex'>
- complex(x, y),将x和y转换到一个复数,实数部分为x,虚数为y
num1 = 1
num2 = 2
num3 = complex(num1, num2)
print(num3)
print(type(num3))
# 输出:
# (1+2j)
# <class 'complex'>
运算
在python中你可以使用数字进行各种数学运算,加法+
,减法-
,乘法*
,除法/
等
基础运算符
运算符 | 描述 | 举例 |
---|---|---|
+ | 加号 | >>> print(1 + 2) 3 |
- | 减号 | >>> print(3 - 1) 2 |
* | 乘号 | >>> print(2 * 3) 6 |
/ | 除号 | >>> print(4 / 2) 2 |
// | 地板除(无论结果是否有小数,总是返回整数部分) | >>> print(7 // 3) 2 |
% | 取余 | >>> print(7 / 3) 1 |
** | 幂运算(即次方) | >>> print(2 ** 3) 8 |
赋值运算符
运算符 | 描述 | 举例 |
---|---|---|
+= | 加赋值 | x += y 等价于 x = x + y |
-= | 减赋值 | x -= y 等价于 x = x - y |
*= | 乘赋值 | x *= y 等价于 x = x * y |
/= | 除赋值 | x /= y 等价于 x = x / y |
%= | 余赋值 | x %= y 等价于 x = x % y |
**= | 幂赋值 | x **= y 等价于 x = x ** y |
位运算符
运算符 | 描述 | 举例 |
---|---|---|
& | 按位与 | >>> print(4 & 5) 4 |
| | 按位或 | >>> print(4 | 5) 5 |
^ | 按位异或 | >>> print(4 ^ 5) 1 |
~ | 按位取反 | >>> print(~5) -6 |
<< | 按位左移 | >>> print(4 << 5) 128 |
>> | 按位右移 | >>> print(4 >> 5) 0 |
比较运算符
比较运算符用来判断布尔值,根据条件满足与否返回True
或False
运算符 | 描述 | 举例 |
---|---|---|
> | 大于 | >>> print(2 > 3) False |
< | 小于 | >>> print(2 < 3) True |
>= | 大于等于 | >>> print(2 >= 3) False |
<= | 小于等于 | >>> print(2 <= 3) True |
== | 全等于 | >>> print(2 == 3) False |
!= | 不等于 | >>> print(2 != 3) True |
逻辑运算符
运算符 | 描述 | 举例 |
---|---|---|
and | 逻辑与运算,等价于数学中的且 | >>> print(1 and False) False |
or | 逻辑或运算,等价于数学中的或 | >>> print(1 or False) True |
not | 逻辑非运算,等价于数学中的非 | >>> print(not False) True |