python学习[第四篇] 数据类型之 数字

数字类型

数字类型分类

python数字类型分五类(整形有3个 浮点型 复数)

  • 整形
  •   标准整形  0101 84 -237 0x80 017 -680 -0x92
  •   布尔型 True False
  •   长整型 (能表达的数值与机器位数有关 ,用大写L表现长整型)
  • 浮点数  0.0 -777.1.6 6.022e23 4.2E-10
  • 复数 

复数特有内建属性

      num.real num.imag num.conjugate()

#复数赋值
aComplex=-8.333-1.47j
# 复数属性--实部
aComplex.real
# 复数属性--虚部
aComplex.imag
# 复数属性--共轭复数
aComplex.conjugate()

操作符

数字类型转换

数字类型间的隐式类型转换(python 自动强制完成),只有当两个数字类型不同时才会进行,转换时python自动执行的,无需编码处理,特定情况可以使用python提供的coerce()内建函数实现转换

  • 如果有一个操作数是复数,另一个操作数被转换为复数。
  • 否则,如果有一个操作数是浮点数,另一个操作数被转换为浮点数。
  • 否则,如果有一个操作数是长整型,另一个操作数被转换为长整型。
  • 否则,两者必然都是长整型,无需类型转换。

标准类型操作符

以下五种标准操作符都适用于 数字类型。

字符串表示 ·· 

内建函数 cmp repr str type 

值比较 < > <= >= == != <>

对象比较 is is not

布尔操作符 not and or 

算术操作符

python支持单目操作符正好(+),符号(-);双目操作符 +、-、×、/、%、××,分别表示 加法,减法,乘法,除法,取余,幂运算。

除法 

传统除法 :  整数除法 执行 1/2=0 浮点数执行真正的除法

真正的除法: from __future__ import division ; 1/2  =0.5

地板除 : // 1.0/2.0 =0.0 1/2=0 

取余

% 和其他语言一致

幂运算 **

3**2=9 

位操作符

python支持 标准位运算:  取反(~),按位与(&) 、或(|) 、 异或(^)、 左移(<<)、 右移(>>)

复数会被当作整数的2机制补码处理

左移和右移N位等同于无溢出检查的2的N次幂运算 :2**N

对长整型来说,位操作符 使用经修改的2进制补码形式,使得可以无限向左扩展。

内建函数与工厂函数

标准类型函数

cmp()   str()  type()

数字类型函数

工厂函数: int() long() bool() float() complex()

complex(2.4,-8)  = (2.4-8j)

功能函数

abs() coerce() divmod() pow() round ()

coerce(num1,num2)将num1和num2转化为同一类型,然后以一个元组形式返回。 遵循数字类型转换规则。

coerce(1.3,134L)  (1.3,134.0) 

coerce(1j,134L) (1j,134+0j)

divmod() 对整型来说返回值是地板除和取余操作的结果 ,对浮点型 返回的商部分是 math.floor(num1/num2) ,对复数来说 返回的商部是 math.floor(num1/num2).real)

divmod(10,3) (3(地板除),1(取余)) 

divmod(10,2.5) (4.0,0.0)  

divmod(2+1j,0.5-1j)  (0j,(2+1j)

round()用于对浮点型进行四舍五入的运算,有一个可选的小数位参数,不提供的话返回与第一个参数最接近的整形。

round(3) (3.0)

round(3.49999) (3.0)

round(3.499999,1) (3.5)

仅用于整形的函数

1进制转换函数

oct() hex() 

2 ascii 转换函数

ord(num) 接受一个ascii字符或unicode字符,返回相应的ascii值或unicode值

chr(num) 接收ascii值的数字转换为 ascii字符,范围(0<=num<=255)

unichr(num) 接收unicode值的数字转换为unicode字符

布尔值细说

  • 布尔值有两个永远不变的值 : True False
  • 布尔值是整型的子类,但是不能再被继承而生成他的子类
  • 没有__nonzero__()方法的对象默认值是True
  • 对已值为零的任何数字或空集(空列表,空元组,空字典)其布尔值都是False

相关模块

decimal

>>> Decimal(0.1)+Decimal('0.1')
Decimal('0.2000000000000000055511151231')

array

math

operator

random

猜你喜欢

转载自www.cnblogs.com/ryanpan/p/9267127.html
今日推荐