數字 number
「數字」就是我們常見的阿拉伯數字,但在 Python 裡,數字又分成「整數」、「浮點數」( 小數 ) 和「底數」,數字可以進行各種數學式的運算,也可以進行各種邏輯比較、時間表達等以數字為主的運算。
本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )
整數
整數 integer,表示沒有分數或小數點的十進位數字,使用 type 查看整數的「型別」,可以得到「int」的型別。
type(5) # int
整數可以透過下方數學式進行一般的算數計算,並依循「先乘除後加減」的規則。
運算子 | 說明 | 範例 | 結果 |
---|---|---|---|
+ | 加法 | 1+2 | 3 |
- | 減法 | 20-12 | 8 |
* | 乘法 | 2*3 | 6 |
/ | 除法 | 9/2 | 4.5 |
// | 除法取整數 ( 無條件捨去 ) | 9//2 | 4 |
% | 餘數 | 9%2 | 1 |
** | 次方 | 2**3 | 8 |
3 + 2 # 5
3 + 2 * 2 # 7
( 3 + 2 ) * 2 # 10
如果整數的運算會產生小數點,結果就會轉換成浮點數。
type(3/2) # float
進行整數的運算時,需要注意數字的「開頭」不能為 0 ( 除非是「底數」 ),如果整數開頭為 0,執行時會出現錯誤。
如果要讓一個數值等於「整數」,可以使用「int 函式」來進行型態的轉換,int 函式也會將小數點的部分無條件捨棄、將數字字串轉換成數字,或將布林值轉換成 1 或 0。
int(5.1) # 5
int(9/2) # 4
int('5') # 5
int('+2') # 2
int(True) # 1
int(False) # 0
int 函式也可以進行二進制、八進制、十六進制的轉換。
- 十進制:0~9,當 10 的時候會進一位。
- 二進制:只有 1 和 0,當 2 的時候會進一位,變成 10,3 則是 11。
- 八進制:0~7,當 8 的時候會進一位,變成 10,9 則是 11。
- 十六進制:0~15 ( 10~15 由 A~F 表示 ),當 16 的時候會進一位,變成 10,11 則是 17。
int('101', 2) # 5 二進制
int('101', 8) # 65 八進制
int('101', 16) # 257 十六進制
注意,如果 int 轉換的是「字串」或「有小數點數字的字串」,就會發生錯誤。
浮點數
浮點數 float,表示包含小數點的十進位數字,使用 type 查看整數的「型別」,可以得到「float」的型別,從下方的程式可以看到,只要數值包含了小數點,就算是 1.0 或 0.0,都會是「浮點數 float」的型別 ( 注意,由於計算機有位元數限制,有小數點的數字最多只有 15 位有效數字 )。
type(5.1) # float
type(1.0) # float
type(0.0) # float
如果使用浮點數和整數進行運算 ( 或和布林值運算 ),得到的結果會是浮點數。
1.0 + 5 # 6.0
1.0 + True # 2.0
1.0 + False # 1.0
浮點數可以透過「float 函式」將整數、數字文字或布林值,轉換成浮點數的數字。
float(5) # 5.0
float('5') # 5.0
float('5.1') # 5.1
float(True) # 1.0
float(False) # 0.0
底數
底數是在數字的前方,加入 0b、0o 或 0x 的底數,來表示二進制、八進制或十六進制的數字,在「位元級」的模式下,往往是使用二進制、八進制或十六進制進行操作。
底數 | 代表 |
---|---|
0b 或 0B | 二進制 |
0o 或 0O | 八進制 |
0x 或 0X | 十六進制 |
0b1111 # 15 ( 二進制 )
0o1111 # 585 ( 八進制 )
0x1111 # 4369 ( 十六進制 )
布林
「布林 Bool」只有 True 和 False 兩個值,通常 True 可以表示為 1,Fasle 可以表示為 0,透過特殊函示 bool() 可以將任何資料型態轉換成布林,布林主要運用在邏輯判斷中,可以根據得到的布林值,作出對應的動作,在之後的許多範例中,都可以看見布林的應用。
下列「非 0 數字」會轉換為 True:
bool(True) # True
bool(1) # True
bool('ok') # True
bool(-1) # True
下列「0 值數字」會轉換為 False:
bool(False) # False
bool(0) # False
bool(0.0) # False
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~