Python数字类型:整型、长整型、布尔型、双精度浮点型、十进制浮点型、复数

  • 整型一般以十进制表示

  • 八进制整型以数字0开始

  • 十六进制整型以0x或0X开始

  • 复数属性

    • num.real        该复数的实部

    • num.imag        该复数的虚部

    • mun.conjugate    返回该复数的共轭复数

>>> aComplex = -8.333-1.47j
>>> aComplex
(-8.3330000000000002-1.47j)
>>> aComplex.real
-8.3330000000000002
>>> aComplex.imag
-1.47
>>> aComplex.conjugate

>>> aComplex.conjugate()
(-8.3330000000000002+1.47j)


算术操作符

1、传统除法

>>> 1 / 2
0

2、from __future__ import division指令,可以实现真正的除法运算

>>> from __future__ import division
>>> 1 / 2
0.5


位操作符

  • 取反(~)

  • 按位与(&)

  • 或(|)

  • 异或(^)

  • 左移(<<)

  • 右移(<<)


内建函数

  • cmp()    比较两个数的大小,用1或-1、0表示

  • str()     将数字转换为字符串

  • type()    返回数字对象的类型



数字类型函数

1、转换工厂函数

    函数int()、long()、float()、和complex()用来将其他数值类型转换为相应的数值类型。

2、内建函数示例

>>> int(4.22121)
4
>>> long(43)
43L
>>> float(4)
4.0
>>> complex(4)
(4+0j)
>>> complex(2.4, -8)
(2.3999999999999999-8j)
>>> complex(2.3e-10, 45.3e4)
(2.3000000000000001e-10+453000j)


功能函数

    python有5个运算内建函数用于数值运算:abs()、coerce()、divmod()、pow()和round()

1、abs()返回给定参数的绝对值

>>> abs(-34)
34
>>> abs(10.)
10.0
>>> abs(1.2-2.1j)
2.4186773244895652
>>> abs(0.23 - 0.78)
0.55000000000000004


2、coerce()函数,数据类型转换函数

coerce()函数仅返回一个包含类型转换完毕的两个数值元素的元组

>>> coerce(1,2)
(1, 2)
>>> coerce(1.3, 134L)
(1.3, 134.0)
>>> coerce(1, 134L)
(1L, 134L)
>>> coerce(1j, 134L)
(1j, (134+0j))
>>> coerce(1.23-41j, 134j)
((1.23-41j), 134j)


3、divmod()内建函数把除法和取余运算结合起来,返回一个包含商和余数的元组。对整型来算,它的返回值就是地板除和取余操作的结果。对浮点型来说,返回的商部分是math.floor(num1/num2),对复数来说,商部分是ath.floor((num1/num2).real)

>>> divmod(10,3)
(3, 1)
>>> divmod(10,2)
(5, 0)
>>> divmod(3,10)
(0, 3)
>>> divmod(10,2.5)
(4.0, 0.0)
>>> divmod(2.5,10)
(0.0, 2.5)
>>> divmod(2+1j, 0.5-1j)
__main__:1: DeprecationWarning: complex divmod(), // and % are deprecated
(0j, (2+1j))


4、pow()函数和双星号(**) 操作符都可以进行指数运算。不过二者的区别并不仅仅在于一个是操作符,一个是内建函数。

>>> pow(2,5)
32
>>> pow(2,8)
256
>>> pow(5,2)
25
>>> pow(3.141592, 2)
9.8696002944640018
>>> pow(1+1j, 3)
(-2+2j)


5、内建函数round()用于对浮点型进行四舍五入运算。它有一个可选的小数位数参数。如果不提供小数位参数,它返回与第一个参数最接近的整型(但仍然是浮点型)。第二个参数告诉round函数将结果精确到小数点后指定位数。

>>> round(3)
3.0
>>> round(3.2)
3.0
>>> round(3.121)
3.0
>>> round(3.45)
3.0
>>> round(3.45212121212)
3.0

>>> import math
>>> for i in range(10):
...     print round(math.pi, i)
... 
3.0
3.1
3.14
3.142
3.1416
3.14159
3.141593
3.1415927
3.14159265
3.141592654

>>> round(-3.5)
-4.0
>>> round(-3.8)
-4.0
>>> round(-3.2)
-3.0
>>> round(-3.49)
-3.0
>>> round(-3.49, 1)
-3.5

    round()、int()、math.floor()这几个函数好像做的同一件事,很容易将他们弄混,下面列出他们之间的不同之处。

  • 函数int()直接解去小数部分(返回值为整型)

  • 函数floor()得到最接近原数但小于原数额整型(返回值为浮点型)

  • 函数round()得到最接近原数的整型(返回值为浮点型)

下面的例子用4个正数和4个复数作为这三个函数的参数,将返回结果列在一起做个比较:

>>> import math
>>> for eachNum in (.2, .7, 1.2, 1.7, -.2, -.7, -1.2, -1.7):
...     print "int(%.1f) \t%+.1f" % (eachNum, float(int(eachNum)))
...     print "floor(%.1f) \t%+.1f" % (eachNum, math.floor(eachNum))
...     print "round(%.1f) \t%+.1f" % (eachNum, round(eachNum))
...     print '-' * 20
... 
int(0.2)     +0.0
floor(0.2)     +0.0
round(0.2)     +0.0
--------------------
int(0.7)     +0.0
floor(0.7)     +0.0
round(0.7)     +1.0
--------------------
int(1.2)     +1.0
floor(1.2)     +1.0
round(1.2)     +1.0
--------------------
int(1.7)     +1.0
floor(1.7)     +1.0
round(1.7)     +2.0
--------------------
int(-0.2)     +0.0
floor(-0.2)     -1.0
round(-0.2)     -0.0
--------------------
int(-0.7)     +0.0
floor(-0.7)     -1.0
round(-0.7)     -1.0
--------------------
int(-1.2)     -1.0
floor(-1.2)     -2.0
round(-1.2)     -1.0
--------------------
int(-1.7)     -1.0
floor(-1.7)     -2.0
round(-1.7)     -2.0
--------------------

数值运算内建函数

函数
功能
abs(num)
返回num的绝对值
coerce(num1,num2)
将num1和num2转换为同一类型,然后以一个元组的形式返回
divmod(num1,num2)
除法和取余运算的结合。返回一个元组(num1/num2, num1%num2)。对浮点型和复数的商进行下舍入(复数仅取实数部分)
pow(num1,num2,mod=1)
取num1的num2次方。如果提供mod参数,则计算结果再对mod进行取余运算
round(flt,ndig=1)
接受一个浮点型flt并对其四舍五入,保存ndig位小数。若不提供ndig参数,则默认小数后0位




仅用于整型的函数

1、进制转换函数

Python除了支持十进制转换,同时也支持八进制和十六进制整型。Python提供了两个内建函数来返回字符串表示的八进制和十六进制中整型,分别是oct()和hex()。它们接受一个整型(任意进制的)对象,并返回一个对应的字符串对象。

>>> hex(255)
'0xff'
>>> hex(230948231)
'0xdc3fd87'
>>> hex(65535*2)
'0x1fffe'
>>> 
>>> oct(255)
'0377'
>>> oct(777)
'01411'
>>> oct(230948231)
'01560776607'
>>> oct(65535*2)
'0377776'


2、ASCII转换函数

Python也提供了ASCII(美国标准信息交换码)码与其序列值之间的转换函数。每个字符对应一个唯一的整型(0~255)。对所有使用ASCII表的计算机来说,这个数值是不变的。这保证了不同系统之间程序行为的一致性。函数chr()接受一个单字节整型值,返回一个字符串,其值为对应的字符。函数ord()则相反,它接受一个字符,返回其对应的整型值。

>>> ord('a')
97
>>> ord('A')
65
>>> ord('b')
98
>>> ord('c')
99
>>> ord('f')
102
>>> ord('0')
48
>>> 
>>> chr(97)
'a'
>>> chr(1)
'\x01'
>>> chr(2)
'\x02'
>>> chr(33)
'!'
>>> chr(34)
'"'
>>> chr(35)
'#'

>>> chr(65L)
'A'
>>> chr(66L)
'B'


仅适用于整型的内建函数

函数
操作
hex(num)
将数字转换成十六进制数并以字符串形式返回
oct(num)
将数字转换成八   进制数并以字符串形式返回
chr(num)
将ASCII值的数字转换成ASCII字符,范围只能是0<=num<=255
ord(chr)
接受一个ASCII或Unicode字符(长度为1的字符串),返回相应的ASCII值或Unicode值
unichr(num)
接受Unicode码值,返回其对应的Unicode字符。所接受的码值范围依赖于你的Python是构建于UCS-2还是UCS-4


其他数字类型

1、布尔数(True和False,对应1和0)

  • 有两个永不改变的值True和False

  • 布尔型是整型的子类

  • 没有__nonzero__()方法的对象的默认值是True

  • 对于值为零的任何数字或空集(空列表、空元组、空字典)在Python中的布尔值都是False

  • 在数学运算中,Boolean值的True和False分别对应1和0

>>> bool

>>> bool(1)
True
>>> bool(0)
False
>>> bool(2)
True
>>> bool(True)
True
>>> bool('1')
True
>>> bool('0')
True
>>> bool([])
False
>>> bool('')
False
>>> bool({})
False
>>> bool((1,))
True
>>> bool(())
False
>>> 

# 使用布尔数
>>> foo = 42
>>> bar = foo < 100
>>> bar
True
>>> print bar + 100
101
>>> print '%s' % bar
True
>>> print '%d' % bar
1
>>> 

# 无__nonzero__()
>>> class C: pass
... 
>>> c = C()
>>> bool(c)
True
>>> bool(C)
True
>>> 
>>> 

# 重载__nonzero__() 使它返回False
>>> class C:
...     def __nonzero__(self):
...         return False
... 
>>> c = C()
>>> bool(c)
False
>>> bool(C)
True


十进制浮点型

可以通过字符串或其他十进制数创建十进制浮点型。需要导入decimal模块以使用Decimal类

>>> from decimal import Decimal
>>> dec = Decimal('.1')    数值要用引号引起
>>> dec
Decimal('0.1')
>>> print dec
0.1

>>> dec + Decimal('1.0')
Decimal('1.1')
>>> print dec + Decimal('1.0')
1.1


random模块