003数值类型
Python之中的数据类型有五种:
1. 任意精度整数(int类型)
2. 有限精度浮点数(float类型)
3. 高精度浮点数(Decimal类型)
4. 分数(Fraction类型)
5. 复数(complex类型)
[A] int类型
Python之中的整数类型可以为任意长度,只受计算机内存的限制。
不同进制表示, Python默认进制为十进制,共可表示四种不同进制:
123 # 十进制数123 0x123 或 0X123 # 十六进制数123 0o123 或 0O123 # 八进制数123 0b111 或 0B111 # 二进制数111
int对象
创建int对象:
x = int(10) # 创建int对象(默认为十进制)
a = int(‘125’,8) # 将八进制的字符串’125’转换成十进制
in对象的方法:
若有int类型数据a,则 X = a.bit_length() 或x = int.bit_length(a) # 返回a的二进制数长度
进制转换: Python内置有进制转换函数
bin(n) # 将数值n转换成二进制数,其中n可为任意进制的数 oct(n) # 将数值n转换成八进制数,其中n可为任意进制的数 hex(n) # 将数值n转换成十六进制数,其中n可为任意进制的数
注:这些进制转换函数所返回的是字符串格式的数据,还需借助int等函数将其转换成数值格式。
[B] float类型
float类型(有限精度浮点数)是用来表示实数的类型,在Python中其精度与计算机精度有关。Python内部float类型精度有限,一般超过小数点后十五位则开始出现误差。
创建float对象
创建float对象的方法为:
float(x) # 将数值(如123)或者字符串格式的数值(如‘123’)转换成float对象。其中x只能为十进制。
float对象方法:
转换成分数,如:
>>>1.25.as_integer_ratio() 或 float.as_integer_ratio(1.25) # 返回元组(5,4)
判断浮点型数值是否为整数(即是否无小数部分):
>>>2.0.as_integer_ratio() 或 float.as_integer_ratio(2.0) # 返回逻辑值 True
[C] Decimal类型
Decimal对象
decimal为Python一个内置模块,,该模块提供了两种基本数据类型:Decimal(高精度浮点数)和Context(精度和舍入参数),以控制运算精度,有效位数和四舍五入操作。
>>>from decimal import Decimal # 使用Decimal需先导入该模块 >>>a = Decimal(x) # x可以为数值或者字符型数值
注:字符型数值无计算误差
Context对象
Context对象用于设置高精度浮点数运算所涉及的各种参数控制:
Context (prec=None, rounding=None, Emin=None, Emax=None, capitals=None, clamp=None, flags=None, traps=None) prec: # 精度 rounding: # 四舍五入方式 Emin/ Emax: # 指数范围 capitals: # 科学计数法中的e的大小写(1表示大写,0表示小写) clamp: # 指定指数范围的精确度 flags: # 环境变量初始状态信号变量 traps: # 信号列表,返回发生错误时的异常信息
通常不直接创建Context对象,而是采用decimal中的getcontext()函数获取当前活动的Context对象,进而修改相关参数进行计算控制,如:
>>>from decimal import Decimal # 导入相关模块 >>>ctx = getcontext() # 获取当前活动的context对象 >>>ctx.prec = 5 # 设置精度为0.00001
Python中设置了三个默认的context模块供选择使用:BsaicContext,ExtendedContext和DefaultContext。在Python中通过decimal模块中的setcontext()函数可以设置当前context对象,如:
>>>from decimal import * # 导入decimal模块 >>>setcontext(BsaicContext) # 将BsaicContext对象设置为当前context对象
[D]Fraction类型(分数)
创建Fraction对象,其语法如下:
>>>from fractions import Fraction # 导入相关模块 >>>Fraction(m,n) # 指定分子m和分母n >>>Fraction(x)#将数x转换成分式,其中x可为任何数值数据或者文本数据
Fraction对象的方法:None
[E] complex类型(复数)
complex复数的创建
复数的创建方法有里两种:自然法和函数法
自然法:当数值之中包含虚部(j或者J)时,Python自动解释为复数常量,如:
>>>a = 1+2j # 给变量a赋值1+2j
函数法:用函数complex创建复数
>>>complex(m, n) # 创建复数对象,虚部可选
complex对象的方法
complex对象的方法共三种,分别为:
>>> (1+2j).real # 返回实部 >>>(1+2j).imag # 返回虚部 >>>(1+2j).conjugate() # 返回共轭复数
[F] random模块和随机函数
random模块的函数seed()可以设置伪随机数生成的种子,其基本形式为:
random.seed(a = None, version = 2)
其调用方法为:
>>>import random >>>random.seed(1) >>>for i in range(5): print(random.randint(1,5), end =’,’) # 输出4,1,2,2,1,
保存内部状态(可以保存状态后进行取用),其主要函数为:
s = random.getstate() # 获取当前伪随机数生成器的状态 random.setstate(s) # 设置之前保存的伪随机数生成器的状态
随机整数
随机整数的生成方法主要有三种:
>>>import random >>>random.randrange(start, stop, step) # 在[start, stop)之间生成随机整数,若省略start,则在[0, stop);若省略step,则步长默认为1 >>> random.randint(a, b) # 在[a, b]之中返回随机整数 >>>random.getrandbit(k) # 返回位(bit)长为k的随机整数
随机系列
random模块还可以从祖列中随机抽取数据,其主要方法有四种: >>>random.choice(seq) # 从非空的系列seq中随机返回一个元素 >>> random.sample(seq, k) # 从非空的系列seq中随机返回k个元素 >>> random.shuffle(x[,random]) # 将非空系列x进行混排,默认方法为random
随机实数函数
查表可得