python基础之数值类型
python3中共有11种基本数据类型,而这11种基本数据类型又通常分成3类,即
- 数值类型:int (整形)float(浮点型) bool(布尔) complex(复数)
- 序列类型:string(字符串) list(列表) couple(元组) bytes(二进制字符串) bytearray(二进制数组)
- 散列类型:set(集合) dict(字典)
其中 bytes与bytearray是python3中引入的新类型。
从数值类型说起,首先列出python中常见的算术运算符:
运算符 | 描述 | 实例 |
+ | 加 :两个对象相加 | 2 + 4输出结果 6 |
- | 减 :得到负数或是一个数减去另一个数 | 1 -3 输出结果-2 |
* | 乘 - 两个数相乘 | 2 * 4 输出结果8 |
/ | 除 - x除以y | 6 / 3 输出结果 2.0 |
% | 取余(取模) - 返回除法的余数 | 6 % 3 输出结果 0 |
// | 取整除 - 返回商的整数部分(向下取整) | 5//2输出结果2(注:5.0//2.0输出结果2.0) |
** | 幂 - 返回x的y次幂 | 2**4 为2的4次方, 输出结果16 |
值得注意的是python中的数值运算会存在如下图所示小数运算不精确的问题
此时可以通过导入decimal模块来解决这个问题。首先来介绍一下decimal模块:
注:模块(module)是 Python 中非常重要的东西,你可以把它理解为 Python 的扩展工具。换言之,Python 默认情况下提供了一些可用的东西,但是这些默认情况下提供的还远远不能满足编程实践的需要,于是就有人专门制作了另外一些工具。这些工具被称之为“模块”
Python提供了decimal模块用于十进制数学计算,它具有以下特点:
- 提供十进制数据类型,并且存储为十进制数序列;
- 有界精度:用于存储数字的位数是固定的,可以通过decimal.getcontext().prec=x 来设定,不同的数字可以有不同的精度
- 浮点:十进制小数点的位置不固定(但位数是固定的)
使用方法如下图所示,首先需要导入decimal模块(python中导入模块的语法为 import + 模块名)。通过调用decimal.Decimal()将数值设置为decimal.Decimal类型
之后再对其进行之前的减法运算,可以看到此时输出了精确的结果,前文中的小数计算不精确的问题得以解决。
在数学之中,除了加减乘除四则运算之外还有其它更多的运算,比如开方、对数运算等等,要实现这些运算,需要用到 Python 中的一个模块:Math
math模块中的常用方法有:
方法 | 描述 | 实例 |
math.pi | 返回数学常数Π= 3.141592653589793 | >>> math.pi 3.141592653589793 |
math.e | 返回数学常数e= 2.718281828459045 | >>> math.e 2.718281828459045 |
math.ceil(x) | 返回x的上限,返回最小的整数A (A>=x)。如math.ceil(3.14)返回的整数为4 | >>> math.ceil(3.14) 4 |
math.floor(x) | 返回x的下限,返回一个值最大整数A(A<=x)。如math.floor(3.14)返回的整数为3 | >>> math.floor(3.14) 3 |
math.fabs(x) | 返回x的绝对值 | >>> math.fabs(-3) 3 |
math . pow(x,y) | 返回x的y次方,即返回 xy | >>> math.pow(3,2) 9 |
math.sqrt(x) | 返回√x | >>> math.sqrt(9) 3 |
math.degrees(x) | 将角x从弧度转换成角度。 | >>> math.degrees(math.pi) 180.0 |
math.radians(x) | 把角x从度转换成弧度 | >>> math.radians(180) 3.141592653589793 |
bool(布尔类型)
python中布尔值使用常量True和False来表示。布尔型变量可用于逻辑表达式,也就是“或”“与”“非”之类的逻辑运算和大于小于之类的关系运算,逻辑表达式运算结果为真或为假。例:
注:
1.在数值上下文环境中,True被当作1,False被当作0,例如 True+3=>4
2.其他类型值转换bool值时除了''、""、''''''、""""""、0、()、[]、{}、None、0.0、0L、0.0+0.0j、False为False,其他都为True 例如 bool(-2)=>True
complex(虚数类型)
complex型数据由实部和虚部两个部分构成:real+imag(虚部后缀为j或J)其中实数部分和虚数部分都为浮点数。
例如定义一个虚数,分别输出它的实部和虚部和共轭复数:
数值类型的转换
python中的不同数值类型大多可以相互转换,要注意的是当将float数值转换成int型时python会舍去小数点后部分,且complex型数值无法转换成int型和float型数值
实例: