Python 簡易手冊
單元 6 - 數字型態
整數型態共有三種,分別是整數 (integer) 、浮點數 (floating point number) 及複數 (complex)
種類 | 識別字 |
---|---|
整數 | int |
浮點數 | float |
複數 | complex |
整數的字面常數 (literal) 就是直接寫出來的阿拉伯數字,浮點數則是帶有小數點的阿拉伯數字,複數分成實部及虛部,實部或虛部可以是整數或浮點數,虛部的數字結尾必須加上 j 或 J
a = 1 b = 2.3 c = 4 - 5j |
型態的識別字 (identifier) 也就是類別 (class) 名稱,可以直接當作內建函數 (built-in function) 使用,用做型態轉換
d = int(b) e = float(a) f = complex(b) |
不過要注意複數不能直接轉換成整數或浮點數,但是整數或浮點數可以直接轉換成複數,將以上程式碼加上執行部分,完整程式如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # 設定數字型態的變數 a = 1 b = 2.3 c = 4 - 5j # 轉換型態 d = int(b) e = float(a) f = complex(b) # 印出轉換後的數值 print(d) print(e) print(f) # 檔名: num_demo.py # 說明: 《Python簡易手冊》的範例 # 網址: http://kaiching.org # 作者: Kaiching Chang # 時間: 2024 年 2 月 |
執行結果如下
> python num_demo.py |
2 1.0 (2.3+0j) |
> |
數字型態有如下共通計算與操作方式
操作 | 說明 |
---|---|
x + y | 回傳 x 加 y 的和 |
x - y | 回傳 x 減 y 的差 |
x * y | 回傳 x 乘 y 的積 |
x / y | 回傳 x 除 y 的浮點數商 |
x // y | 回傳 x 除 y 的整數商,也就是做整數除法 |
x % y | 回傳 x 除 y 的餘數 |
x ** y | 回傳 x 的 y 次方 |
-x | 回傳 x 的負值 |
+x | 回傳 x 的正值 |
abs(x) | 回傳 x 的絕對值 |
c.conjugate() | 回傳 x 的共軛複數 |
divod(x, y) | 回傳 x 除 y 的商、餘數組成的序對 |
pow(x, y) | 回傳 x 的 y 次方 |
舉簡單例子如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # 設定計算的變數 a = 2 b = 10 # 印出 a 除 b 的商與餘數 print(divmod(a, b)) # 印出 a 的 b 次方 print(pow(a, b)) # 檔名: num_demo2.py # 說明: 《Python簡易手冊》的範例 # 網址: http://kaiching.org # 作者: Kaiching Chang # 時間: 2024 年 2 月 |
執行結果如下
> python num_demo2.py |
(0, 2) 1024 |
> |
整數也可以用二進位、八進位及十六進位表示,二進位數字的字面常數以 0b 開始,八進位以 0o 開始,十六進位以 0x 開始,如下例變數 a 、 b 、 c 都是整數 62
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # 設定不同進位的相同數字 a = 0b111110 b = 0o76 c = 0x3e # 印出 a 與 b 是否相等 print(a == b) # 印出 b 的 c 是否相等 print(b == c) # 檔名: num_demo3.py # 說明: 《Python簡易手冊》的範例 # 網址: http://kaiching.org # 作者: Kaiching Chang # 時間: 2024 年 4 月 |
執行結果如下
> python num_demo3.py |
True True |
> |
內建函數 bin() 會回傳引數的二進位字串, oct() 回傳引數的八進位字串, hex() 回傳引數十六進位字串。
整數能用位元的方式進行計算,也就是以二進位表示數字,每個位元 0 或 1 進行計算,有如下的位元運算子 (bitwise operator) , x 、 y 、 n 都是整數
操作 | 說明 |
---|---|
x | y | 逐位元計算 x 或 y |
x ^ y | 逐位元計算 x 互斥或 y |
x & y | 逐位元計算 x 且 y |
x << n | x 向左位移 n 位元 |
x >> n | x 向右位移 n 位元 |
~x | x 逐位元反轉 |
單元 16 - 位元運算子會詳細介紹位元運算子。
整數型態有如下方法 (method) , x 為整數,以 int 開頭的是類別方法 (class method)
操作 | 說明 |
---|---|
x.bit_length() | 回傳 x 二進位形式的位元長度 |
x.bit_count() | 回傳 x 二進位形式中 1 數量 |
x.to_bytes(length=1, byteorder='big', *, signed=False) | 回傳 x 的 bytes 型態 |
int.from_bytes(bytes, byteorder='big', *, signed=False) | 從 bytes 型態引數轉換成整數 |
x.as_integer_ratio() | 回傳 x 最接近的整數比例 |
x.is_integer() | 判斷 x 是否為整數 |
浮點數型態則有如下方法, x 為浮點數,以 float 開頭的是類別方法
操作 | 說明 |
---|---|
x.as_integer_ratio() | 回傳 x 最接近的整數比例 |
x.is_integer() | 判斷 x 是否為整數 |
x.hex() | 將 x 轉換成十六進位形式字串 |
float.fromhex(s) | 將浮點數十六進位形式字串 s 轉換成浮點數 |
這裡浮點數的十六進位字串是指浮點數在電腦中的儲存方式。