5.1 數字類型
建立數值對象和給變量指派
anInt = 1
aLong = -9999999999L
aFloat = 3.1415926
aComplex = 1.23+4.56j
如何更新數字對象
變量像一個指針指向裝變量值的盒子,對不可變類型來說,你無法改變盒子内容,但可以将指針指向一個新盒子,每次将另外的數字賦給變量時,實際上是建立了一個新的對象并把它賦給變量
anInt += 1
aFloat = 2.718281828
如何删除數字對象
del anInt
del aLong,aFloat,aComplex
5.2 整型
5.2.1 布爾型
5.2.2 标準整數類型
0101 84 -237 0x80 017 -680 -0x92
5.2.3 長整型
16384L -0x4E8L -2323124 045332423
29432432 0xDDWAFEGEGREHREHRERTJW -5432432L
注:用大寫字母"L"表示長整型
>>> aLong = 99999999999l
>>> aLong
99999999999L
>>> print aLong
99999999999
5.3 雙精度浮點數
0.0 -777. 1,6 -5.532423423 9.6e3 * 1.0
4.3e25 float(12) 4.2E-10 -90. -1.609E-19
5.4 複數
64.375+1j 4.23-8.5j 0.23-8.55j 1.23e-045+6.7e+089j
9.82432-8.342432J -.0224+0j
5.4.1複數的内建屬性
屬性描述
num.real該複數的實部
num num.imag該複數的虛數
num.conjugate()傳回該複數的共轭複數
>>> aComplex = -8.333-1.47j
>>> aComplex
(-8.333-1.47j)
>>> aComplex.real
-8.333
>>> aComplex.imag
-1.47
>>> aComplex.conjugate()
(-8.333+1.47j)
5.5 運算符
5.5.1 混合模式運算符
>>> 1 + 4.5
5.5
5.5.2 标準類型運算符
>>> 5.2 ==5.2
True
>>> -719 >= 833
False
>>> 2 < 5 <9
>>> 77 > 66 == 66
>>> 0. < -90.4 < 55.3e2 != 3 <181
>>> (-1 < 1) or (1 < -1)
5.5.3 算數運算符
傳統除法
>>> 1/2 # 地闆除
>>> 1.0/2.0 # 真正除法
0.5
真正的除法
>>> from __future__ import division
>>> 1 / 2
>>> 1.0 / 2.0
地闆除
>>> 1 // 2# 地闆除,傳回整數
>>> 1.0 // 2.0# 地闆除,傳回浮點數
0.0
>>> -1 // 2# 傳回比 -0.5小的整數,也就是 -1
-1
取餘
>>> 4%3
1
>>> 4%2
幂運算
>>> 3**2
9
>>> -3 ** 2
-9
>>> (-3) ** 2
>>> 4.0 ** -1.0
0.25
Python數值運算的例子:
>>> -442-77
-519
>>> 4 ** 3
64
>>> 4.2 ** 3.2
98.71831395268974
>>> 8/3
2.6666666666666665
>>> 8.0/3.0
>>> 8%3
2
>>> (60. - 32.) * (5. /9.)
15.555555555555557
>>> 14 * 0x04
56
>>> 0170 / 4
30.0
>>> 0x80 + 0777
639
>>> 45L * 22L
990L
>>> 16399L + 0xA94E8L
709879L
>>> -2147483648L - 52147483648L
-54294967296L
>>> 64.375+1j + 4.23-8.5j
(68.605-7.5j)
>>> 0+1j ** 2
(-1+0j)
>>> 1+1j ** 2
0j
>>> (1+1j) ** 2
2j
5.5.4 *位運算符(隻适用于整數)
位運算符功能
-num單目運算,對數的每一位去反,結果為
num1 << num2Num1 左移 num2位
num1 << num2Num1 右移 num2位
num1 & num2Num1 與 num2按位 與
num1 ^ num2Num1 異或 num2位
num1 | num2Num1 與 num2位按位 或
例:
>>> 30 & 45
12
>>> 30 | 45
63
>>> 45 & 60
44
>>> ~30
-31
>>> ~45
-46
>>> 45 << 1
90
>>> 60 >> 2
15
>>> 30 ^ 45
51
5.6 内建函數與工廠函數
5.6.1 标準類型函數
>>> cmp(-6,2)
>>> cmp(-4.33333,-2.7118281828)
>>> cmp(0xFF,255)
>>> str(0xFF)
'255'
>>> str(55.3e2)
'5530.0'
>>> type(0xff)
<type 'int'>
>>> type(9876543210L)
<type 'long'>
>>> type(2-1j)
<type 'complex'>
5.6.2 數字類型函數
内建函數示例:
>>> int(4.25)
4
>>>
>>> int(4.2555)
>>> long(42)
42L
>>> float(4)
>>> complex(4)
(4+0j)
>>> complex(2.4,-8)
(2.4-8j)
>>> complex(2.3e-10,45.3e4)
(2.3e-10+453000j)
數值工廠函數總結
類(工廠函數)操作
bool(obj) b傳回obj對象的布爾值,也就是obj.__nonzero__()方法的傳回值
int(obj,base=10)傳回一個字元串或數值對象的整數表示,類似string.atoi();
long(obj,base=10)傳回一個字元或資料對象的長整數表示,類似string.atol()
float(obj)傳回一個字元串或資料對象的浮點數表示,類似string.atol()
complex(str) or
complex(real,imag=0.0)傳回一個字元串的複數表示,或者根據給定的實數(及一個可選的虛數部分)生成一個複數對象
功能函數:
Python有五個運算内建函數用于數值運算: abs(),coerce(),divmod(),pow()和round()
abs()傳回給定參數的絕對值
>>> abs(-1)
>>> abs(10.)
10.0
>>> abs(1.2-2.1j)
2.418677324489565
>>> abs(0.23-0.78)
0.55
函數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,134L)
((1.23-41j), (134+0j))
divmod()會把除法和取餘結合起來組成一個元祖
>>> divmod(10,3)
(3, 1)
>>> 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)
((-0+0j), (2+1j))
pow()和 ** 都可以進行指數運算
>>> pow(2,5)
32
>>> pow(5,2)
25
>>> pow(3.141592,2)
9.869600294464002
KeyboardInterrupt
>>> pow(1+1j,3)
(-2+2j)
round()對浮點數進行四舍五入,第二個參數表示精确到小數點多少位,沒有表示精确到整數位
>>> round(3)
3.0
>>> round(3.45)
>>> round(3.499999999999)
>>> round(3.499999999999,1)
3.5
>>> import math
>>> for eachNum in range(10):
... print round(math.pi,eachNum) #pi即為π
...
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.4)
-3.0
>>> round(-3.49)
>>> round(-3.49,1)
-3.5
注:
int() 直接截去小數部分(傳回值為整數)
floor()得到最接近原數但小于原數的整數(傳回浮點數)
round()得到最接近原數的整數(傳回浮點數)\
>>> for eachNum in (.2,.7,1.2,1.7,-.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.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轉換成同一類型,然後以一個元祖的形式傳回
divmod(num1,num2)除法-取餘運算的結合,傳回一個元祖(num1/num2,num1%num2),對浮點數和複數的商進行下舍入
(複數取實數部分的商)
pow(num1,num2,mod=1)取num1的num2次方,如果提供mod參數,則計算結果再對mod進行取餘運算
round(flt,ndig=0)接受一個浮點數fit并對其四舍五入,白村ndig位小數,若不提供ndig參數,則預設小數點後0位
round()僅用于浮點數.
5.6.3 僅用于整數的函數
進制轉換函數
>>> hex(255)
'0xff'
>>> hex(4324324)
'0x41fbe4'
>>> hex(432432*2)
'0xd3260'
>>> oct(255)
'0377'
>>> oct(4324324)
'020375744'
>>> oct(432432*2)
'03231140'
ASCII轉換函數
>>> ord('a')
97
>>> ord('A')
65
>>> ord('O')
79
>>> chr(97)
'a'
>>> chr(65L)
'A'
>>> chr(48)
'0'
僅适用于整數的内建函數
函數操作
hex(num)将數字轉化成16進制并以字元串輸出
oct(num)将數字轉換成8進制并以字元串輸出
chr(num)将ASCII值的數字轉換成ASCII字元 範圍0<=num<=255
ord(chr)接受一個ASCII或Unicode字元(長度為1的字元串),傳回相應的ASCII或Unicode值
unichr(num)接受Unicode碼值,範圍其對應的Unicode字元,所接受的碼值範圍依賴于你的Python是建構于USC-2還是UCS-4
5.7.1 布爾"數"
永恒不變的兩個值 True或False
布爾型是整型的子類,但不能再被繼承二生成它的子類
沒有__nonzero__()方法的對象預設是True
對于值為零的任何數字或空集(空清單,空元祖和空字典等)在Python中布爾值都為False
在數字運算中,布爾值的True和False分别對應1和0
#intro
>>> bool(1)
>>> bool(True)
>>> bool(0)
>>> bool('1')
>>> bool('0')
>>> bool([])
>>> bool((1))
# 使用布爾值
>>> foo = 42
>>> bar = foo < 100
>>> bar
>>> print bar + 100
101
>>> print '%s' % bar
>>> print '%d' % bar
# 無 __nonzero__()
>>> class C: pass
>>> c = C()
>>> bool(c)
>>> bool(C)
慎用:
>>> True,False = False,True
>>> bool(False)
5.7.2 十進制浮點數
5.8 相關子產品
子產品介紹
decimal十進制浮點運算類Decimal
array高效數值數組(字元,整數,浮點數等等)
math/cmath标準C庫數學運算函數,正常數學運算在match子產品,複數運算在cmath子產品
operator數學運算符的函數實作,比如 tor.sub(m,n)等價于 m - n
random多種僞随機數生成器
核心子產品:ramdom
兩個整數參數,傳回兩者之間的随機整數:
randrange()随機傳回range([start,]stop[,step])結果的一項
uniform()幾乎和randint()一樣,不過它傳回時兩者之間的一個浮點數
random()類似uniform() 不過下限為0.0 上限為1.0
choice()随機傳回給定序列的一個元素
本文轉自 showerlee 51CTO部落格,原文連結:http://blog.51cto.com/showerlee/1330263,如需轉載請自行聯系原作者