03 Python数值类型及数字类型详解
Python的9大数值类型:
Python中有4种数字类型和5种序列类型,共9种数值类型。
4种数字类型分别是:整型(int),浮点型(float),复数(complex),布尔值(bool)。
5种序列类型分别是:列表(list),字符串(str),元组(tuple),字典(dict),集合(set)。
使用 type() 函数可以查看数值类型以及其他类型,可向type()传参数为变量或值,返回类型。
在Python自带的IDLE中尝试以下代码:
a = 3 print(type(a)) b = 2.1 print(type(b)) c = "Hello world !" print(type(c)) d = True print(type(d))
执行结果是:
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
整型(int)
就是整数,Python中的整数是没有大小限制的,写多少位都可以,只要你内存够。
int()函数可以将其他类型强制转化成整数类型,但并不是所有都可以转化。
下面代码是将字符串转化成整数。
date = "20190713" print(type(date)) datenum = int(date) print(datenum) print(type(datenum))
执行结果为:
<class 'str'>
20190713
<class 'int'>
浮点型(float)
就是小数,双精度储存,与java中的double类型一样。小数在python中叫浮点数,位数不固定。无限循环小数默认保留16位。
类似于int(),float()函数可以将其他类型强制转化成浮点型。
a = True print(float(a))
执行结果为:
1.0
python解释器中由于小数是双精度的,有的非循环小数储存的其实是个无限循环小数,显示默认16位。这会造成计算误差。
比如下列代码:
print(1.2-1) print(0.2*0.2)
执行结果为:
0.19999999999999996
0.04000000000000001
为了精确计算,解决方法有两个,round函数和Decimal函数。
方法一:round(算式,保留位数)
print(round(0.2*0.2, 2))
执行结果:
0.04
方法二:导入Python自带的decimal模块中的Decimal类,类中有个方法叫函数叫Decimal(),注意使用Decimal时括号只能传字符串数字。
from decimal import Decimal a = Decimal('0.2')*Decimal('0.2') print(a)
执行结果:
0.04
布尔型(bool)
只有True和False两种,一般用于条件判断。若在计算中使用布尔值,False代表0,True代表1。注意布尔值首字母大写。例如e=True或e=False。
e=True+False print(e)
执行结果:
1
复数(complex)
首先理解什么是虚数,初中我们就学过虚数?
首先我们导入math和cmath模块使用平方根函数来理解虚数。
sqrt()就是开平方函数,我们用math包中的实数开平方函数给-1开平方。
from math import sqrt sqrt(-1)
负数没有平方根,执行结果当然会报错:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: math domain error
若我们用cmath中的虚数开平方函数给-1开平方呢?
from cmath import sqrt sqrt(-1)
执行结果:
1j
我们利用math模块的sqrt对-1开平方,结果报错了,因为-1开平方结果不是实数。我们再利用cmath模块的sqrt对-1开平方,结果是1j。j就是虚数,1个j表示-1的平方根,系数1不能省略。
由实部和虚部组成的数就是复数,实部就是实数,虚部只能用n倍的 j 代替,1倍的j也要打上1,例如赋值e=1+2j,1+2j就是复数,a=5+1j,5+1j就是复数。Python编程基本用不到复数。复数其实是个对象,查看实部输入<object>.real,查看虚部系数输入<object>.imag,即查看对象属性。
例如下面的代码:
e=1+2j print(type(e)) print(e.real) print(e.imag)
执行结果为:
<class 'complex'>
1.0
2.0
数字类型运算符
四则运算:加+,减-,乘*,除/
print(4+2) print(4-2) print(4*2) print(4/2)
执行结果:
6
2
8
2.0
向下圆整://,取小于等于计算结果的最近整数。
print(5//3)
执行结果:
1
向上圆整:取大于等于计算结果的最近整数。需要使用math模块的ceil()函数,()里可填算式或小数,算法是消除计算结果的小数,整数+1。
import math a = math.ceil(5/3) print(a)
执行结果为:
2
除法取余:%,算法是a%b = a - (a//b)*b
print(5%3)
执行结果(5除以3商是1余2。)为:
2
幂运算:**
print(5**3)
执行结果为:
125
另外math包中有很多函数可以替代运算符,比如幂运算函数pow(),我们计算4的3次方。其他诸如此类函数请查阅Python的API 文档。
import math
mi = pow(4, 3) print(mi)
执行结果为:
64