數字
Python數字數據類型用於存儲數值。數字數據類型是不允許改變的,所以如果改變數字數據類型的值,將重新分配內存空間。
以下實例在變量賦值時Number對象被創建:
#!/usr/bin/env python # _*_ coding:utf-8 _*_ var1 = 1 var2 = 10可以使用del語句刪除單個或多個對象的引用。
del var1, var2Python3支持三種不同的數值類型:
- 整型(int)--通常被稱為是整型或整數,可以是正整數或負整數,不帶小數點。Python3整型是沒有限制大小的,可以當做long類型使用, 但實際上由於機器內存的有限,我們使用的整數是不可能無限大的。
- 浮點型(float)--浮點型數字由整數部分和小數部分組成,浮點型也可以使用科學計數法表示(2.5e2 = 2.5 x 102 = 250)
- 復數(complex)--復數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示,復數的實部a和虛部b都是浮點型。
整型的4種表現形式
- 2進制:以'0b'開頭。例如:'0b11011'表示10進制的27
- 8進制:以'0o'開頭。例如:'0o33'表示10進制的27
- 10進制:正常顯示
- 16進制:以'0x'開頭。例如:'0x1b'表示10進制的27
4種進制的轉換:
通過python中的內置函數(bin、oct、int、hex)來實現轉換
#10進制轉2進制 >>> bin(27) '0b11011' #10進制轉8進制 >>> oct(27) '0o33' #10進制轉16進制 >>> hex(27) '0x1b' #2進制轉10進制 >>> int('0b11011',2) 27 #2進制轉8進制 >>> oct(0b11011) '0o33' #2進制轉16進制 >>> hex(0b11011) '0x1b' #8進制轉10進制 >>> int('0o33',8) 27 #8進制轉2進制 >>> bin(0o33) '0b11011' #8進制轉16進制 >>> hex(0o33) '0x1b' #16進制轉10進制 >>> int('0x1b',16) 27 #16進制轉2進制 >>> bin(0x1b) '0b11011' #16進制轉8進制 >>> oct(0x1b) '0o33'
注:
1、在python2中整型是有限制大小的
在32位機器上,整數的位數為32位,取值范圍為-2**31~2**31-1,即-2147483648~2147483647
在64位系統上,整數的位數為64位,取值范圍為-2**63~2**63-1,即-9223372036854775808~9223372036854775807
超過這個范圍的整型就是long型
2、Python有個特別的機制,它會在解釋器啟動的時候事先分配好一些緩沖區,這些緩沖區部分是固定好取值,例如整數[-5,256]的內存地址是固定的(這里的固定指這一次程序啟動之后,這些數字在這個程序中的內存地址就不變了,但是啟動新的python程序,兩次的內存地址不一樣)。有的緩沖區就可以重復利用。這樣的機制就使得不需要python頻繁的調用內存malloc和free。
數字運算
請參考本人寫的另外一篇博客:Python運算符
數字類型轉換
- int(x):將x轉換為一個整數
- float(x):將x轉換為一個浮點數
- complex(x):將x轉換成一個復數,實數部分為x,虛數部分為0
- complex(x,y):將x、y轉換成一個復數,實數部分為x,虛數部分為y。x和y是數值表達式。
數學常量
常量 描述 pi 數學常量pi(圓周率,一般以∏來表示) e 數學常量e,e即自然常數 實例:
#!/usr/bin/env python # _*_ coding:utf-8 _*_ import math print(math.pi) print(math.e) print('π: %.30f' % math.pi) print('e: %.30f' % math.e)實例結果:
3.141592653589793 2.718281828459045 π: 3.141592653589793115997963468544 e: 2.718281828459045090795598298428
數學函數
函數 | 描述 | 實例 |
abs(x) | 返回數字的絕對值 | abs(-10)返回10 |
ceil(x) | 會生成按順序排在這個輸入值之后的最小整數 | math.ceil(6.6)返回7、math.ceil(-6.6)返回-6 |
trunc(x) | 截斷x小數點后的數字,只留下構成x整數部分的有效數字 | math.trunc(6.6)返回6、math.trunc(-6.6)返回-6 |
floor(x) | 將x轉換為不大於它的最大整數 | math.floor(6.6)返回6、math.floor(-6.6)返回-7 |
exp(x) | 返回e(自然常數)的x次冪(e**x) | math.exp(1)返回2.718281828459045 |
fabs(x) | 返回x的絕對值 | math.fabs(-10)返回10、math.fabs(6.6)返回6.6 |
log(x) | log(x)計算以e為底數的x的自然對數 | math.log(10)返回2.302585092994046 |
log(x,y) | log(x,y)計算以y為底數的x的自然對數 | math.log(27,3)返回3.0 |
log10(x) | 返回以10為底數的x的自然對數,對等於log(x,10) | math.log10(1000)返回3.0 |
modf(x) | 返回一個tuple,其中包含x的小數和整數部分 | math.modf(6.32)返回 (0.3200000000000003, 6.0) |
pow(x,y) | 返回x**y的值 | math.pow(3,4)返回81.0 |
sqrt(x) | 計算x的平方根,數字不能使復數 | math.sqrt(9)返回3.0 |
max(x1,x2,…) | 返回給定參數的最大值 | max(3,2,1,4,5,6)返回6 |
min(x1,x2,…) | 返回給定參數的最小值 | min(3,2,1,4,5,6)返回1 |
round(x[,n]) | 返回浮點數x的四舍五入值,如果給出n值,則代表舍入到小數點后的位數 | round(3.1415926)返回3 round(3.1415926,3)返回3.142 |
隨機數函數
隨機數可以用於數學,游戲、安全領域中,還經常被嵌入到算法中,用以提高算法效率,並提高程序的安全性
函數 描述 實例 choice(seq) 返回seq中的隨機項,seq可以是列表、元組或字符串 random.choice(range(10))randrange([x,]y[,a]) 從x到y之間,以a遞增的范圍內隨機取一個數 random.randrange(5,10,2)random() 隨機生成一個實數,它在(0,1)范圍內 random.random()seed([x]) 改變隨機數生成器的種子seed,x可以是任意可散列對象 random.seed(2)shuffle(lst) 將lst里的所有元素重新排序 random.shuffle(list1)uniform(x,y) 在x至y的范圍內隨機生成一個實數 random.uniform(1,10)
三角函數
math.radians(3)
函數 描述 實例 acos(x) 返回x的反余弦弧度值 math.acos(0.64)返回0.8762980611683406asin(x) 返回x的反正弦弧度值 math.asin(0.64)返回0.694498265626556atan(x) 返回x的正切弧度值 math.atan(0.64)返回0.5693131911006619atan2(x,y) 返回給定的x及y坐標值的反正切值 math.atan2(-0.50, -0.50)返回-2.356194490192345cos(x) 返回x的弧度的余弦值 math.cos(3)返回-0.9899924966004454hypot(x,y) 返回歐幾里得范數sqrt(x*x+y*y) math.hypot(3, 2)返回3.605551275463989sin(x) 返回x的弧度的正弦值 math.sin(3)返回0.1411200080598672tan(x) 返回x的弧度的正切值 math.tan(3)返回-0.1425465430742778degrees(x) 將弧度轉換為角度,如degrees(math.pi/2)返回90.0 math.degrees(3)返回171.88733853924697radians(x) 將角度轉換為弧度 math.radians(3)返回0.05235987755982989