Python 速查手冊

2.3 數字

數字型態共有三種,字面常數 (literal) 分別是沒有小數點的整數 (integer) ,帶小數點的浮點數 (floating-point number) ,以及加上加號與英文字母 j 的複數 (complex number)

print(1234)
print(56.7)
print(89 + 0j)

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:num01.py
# 功能:示範數字的運算
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 num01.py
1234
56.7
(89+0j)
$

什麼情況會用到數字呢?程式 (program) 中絕大多數的場合都會用到數字,像是計算數量、座標等等,因此數字是程式中最常使用的資料型態 (data type) 。

三種數字型態是完全不一樣資料型態,通常依計算需要,在整數及浮點數的場合會自動轉換成浮點數,相同在有複數出現的場合,計算結果會自動轉換成複數,然而反過來並不會自動轉換。

如數學上一樣,數字型態也可做算術運算,加、減都跟數學用的符號一樣,至於乘是用星號 * 代替跟英文小寫字母 x 很像的乘號,除是用斜線 / ,連續兩條斜線 // 用作整數除法,百分比符號 % 則是取餘數,連續兩個星號則是計算次方,另外,正號與負號跟數學上的使用一樣,負負會得正,例如

x = 2
y = 3
print(x + y)
print(x - y)
print(x * y)
print(x / y)
print(x // y)
print(x % y)
print(x ** y)
print(+x)
print(-x)

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:num02.py
# 功能:示範數字的運算
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 num02.py
5
-1
6
0.6666666666666666
0
2
8
2
-2
$

內建函數 (built-in function) 中也有好幾個跟數字型態有關,除了 int()float()complex() 等三個函數是將參數 (parameter) 轉換成相對應的整數、浮點數、複數之外, abs() 是回傳參數的絕對值, divmod() 則是回傳含有兩個值的序對,第一個值為整數除法的結果,第二個值則是取餘數的結果, pow() 跟連續兩個星號一樣,都是計算次方,最後 round() 則是回傳最接近的整數,也就是刪除小數點之後的整數

數字型態都是物件 (object) ,因此依型態需求有一些屬性 (attribute) 及方法 (method) 可用,像是複數有 real 屬性可取得複數的實部, imag 屬性取得複數的虛部, conjugate() 方法則回傳該複數的共軛複數。浮點數的 as_integer_ratio() 方法回傳該浮點數為哪兩個整數的比例, is_integer() 方法回傳該浮點數是否為整數,至於 hex() 方法與類別方法 (class method) fromhex() 則跟雜湊運算相關

整數型態還可以直接進行二進位計算,其中直線符號 | 為「或」,脫字號 ^ 表示「互斥或」,且符號就表示「且」,連續兩個小於符號 << 為向左位移,連續兩個大於符號 >> 為向右位移,鼻音符號 ~ 表示「非」。

x = 2
y = 3
print(x | y)
print(x ^ y)
print(x & y)
print(x >> y)
print(x << y)
print(~x)

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:num03.py
# 功能:示範數字的運算
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 num03.py
3
1
2
0
16
-3
$

此外,內建函數 bin() 回傳整數的二進位形式字串, bit_length() 方法回傳該整數二進位的位元長度,而 to_bytes() 方法與類別方法 from_bytes() 則是用做 byte 陣列處理。

相關教學影片

上一頁: 2.2 真假值
Python 速查手冊 - 目錄
下一頁: 2.4 字串
回 Python 教材首頁
回程式語言教材首頁