Python 內建許多有用的資料型態 (data type) ,像是整數 (integer) 、浮點數 (floating-point number) 、字串 (string) 等
不含小數點的數字為整數,含小數點就是浮點數,使用上不必太擔心,字面常數 (literal) 形式就是物件 (object) ,例如
# 印出 0.2 比例的兩個整數 | |
print(0.2.as_integer_ratio()) | |
# 判斷 0.235 是否為整數 | |
print(0.235.is_integer()) | |
# 判斷 2.000 是否為整數 | |
print(2.000.is_integer()) |
在 Python 中,數字 0.2 、 0.235 、 2.000 都是物件,此例分別呼叫浮點數 float 型態 (type) 的 as_integer_ratio() 與 is_integer() 方法 (method) ,然後用內建函數 (function) print() 印出結果。
字串則是用單引號或雙引號圍起來的內容,使用上兩者並無差別,若有需要在雙引號字串中使用單引號,可以把單引號直接寫進雙引號中,反之亦然,另外字串也可使用跳脫序列 (escape sequence) ,例如
# 印出 Hello world! | |
print("Hello world!") | |
# 印出 Hello world! | |
print("Hello\tworld!") | |
# 印出 John's Treasure! | |
print("John's Treasure!") |
跳脫序列是一些不可見字元,由斜線 \ 開始,然後接一些特定的英文字元,常見的有
跳脫序列的字元 | 說明 |
---|---|
\a | 響鈴 |
\b | 倒退鍵 |
\f | 跳頁 |
\n | 印出新列 |
\r | 歸位符號 |
\t | tab 鍵 |
\v | 垂直定位符號 |
\\ | 印出反斜線 |
\? | 印出問號 |
\' | 印出單引號 |
\" | 印出雙引號 |
另外有三個常數 (constant) 很特別,表示真假值的 True 及 False ,還有表示什麼都不是的 None ,這三個常數也都是關鍵字 (keyword) 。若變數 (variable) 被指派到 None ,這變數就如同空值,在條件測試中等同 False
# 將 a 設定為 None | |
a = None | |
# 將 b 設定為 True | |
b = True | |
# 將 c 設定為 False | |
c = False | |
# 印出 a | |
print(a) | |
# 印出 b | |
print(b) | |
# 印出 c | |
print(c) |
除此之外, Python 中還有許多可包含多筆資料的複合資料型態 (compound data type) ,常用的如串列 (list)
# 建立空串列 | |
a = [] | |
# 建立具有五個元素的串列 | |
b = [1, 2.0, "3", [4], (5)] | |
# 印出 b 的第 1 個元素 2.0 | |
print(b[1]) | |
# 印出 b 的第 3 個元素 [4] | |
print(b[3]) |
串列的字面常數為用中括弧圍起來的資料,這些資料被稱為元素 (element) ,元素可以是任意型態的常數或變數,每個元素均以英文逗點分開。我們可以在串列變數後用中括弧存取裡頭的元素,中括弧裡頭用以 0 開始的索引值 (index) ,如上例 b 第 0 個元素為 1 ,第 1 個元素為 2.0 ,其餘可類推。
串列的特性是可變的 (mutable) ,這是說我們可以任意改變串列中的元素,另一個相對於串列的複合資料型態為序對 (tuple) ,序對則是不可變的 (immutable)
# 建立空序對 | |
a = () | |
# 建立具有五個元素的序對 | |
b = (1, 2.0, "3", [4], (5)) | |
# 印出 b 的第 1 個元素 2.0 | |
print(b[1]) | |
# 印出 b 的第 3 個元素 [4] | |
print(b[3]) |
序對的字面常數為利用小括弧圍起來的資料,裡頭同樣可以是任意型態的常數或變數,取得元素的方式如同串列用中括弧及索引值。一旦建立序對型態的物件後,該物件就不能更新裡頭的元素。
其他還有非常多內建的複合資料型態,常用的還有字典 (dictionary) 。字典是種配對型具有多筆資料的物件,簡單說,字典每一筆資料都是 key:value 所組成, key 就是存取該筆 value 的索引值,例如
# 建立空字典 | |
a = {} | |
# 建立兩個配對資料的字典 | |
b = {1:2.0, "3":[4]} | |
# 印出 b 中 key 為 1 的 value | |
print(b[1]) | |
# 印出 b 中 key 為 "3" 的 value | |
print(b["3"]) |
同樣的,存取 value 亦是用中括弧,中括弧裡頭放 key 。通常字典的 key 是用不可變的資料型態,例如數字或字串,至於 value 則沒有限制。
介紹了很多種資料型態的物件,可是物件還是用變數存取才比較方便。接下來,我們繼續討論變數命名的規則。
中英文術語對照
資料型態 | data type |
整數 | integer |
浮點數 | floating-point number |
字串 | string |
字面常數 | literal |
物件 | object |
方法 | method |
函數 | function |
跳脫序列 | escape sequence |
常數 | constant |
關鍵字 | keyword |
變數 | variable |
複合資料型態 | compound data type |
串列 | list |
元素 | element |
索引值 | index |
可變的 | mutable |
序對 | tuple |
不可變的 | immutable |
字典 | dictionary |
重點整理
- Python 內建的資料型態有整數、浮點數、字串、串列、序對、字典等。
- 整數或浮點數的字面常數就是物件,可如同物件變數呼叫方法。
- 字串是單引號或雙引號圍起來的內容。
- 跳脫序列是一些不可見字元,由斜線開始。
- True 為邏輯上的真, False 為邏輯上的假, None 則是表示虛無,也就是什麼都沒有。
- 串列的字面常數為中括弧圍起來的內容,其內以逗號區隔每個元素。
- 序對的字面常數為小括弧圍起來的內容,其內以逗號區隔每個元素。
- 串列是可變的資料型態,序對則是不可變的資料型態。
- 字典的字面常數的為大括弧圍起來的內容,其內以逗號區隔每個 key:value 配對值, key 通常用不可變的資料型態, value 則沒有限制。
問題與討論
- 字串、串列、序對通常合稱序列 (sequence) ,試著找出他們相似的地方。
- 為什麼要有 None ? None 在程式中的用途為何?
- 為什麼資料型態要分成有可變與不可變的?兩者的主要差別在哪裡?
- 什麼情況會用到串列呢?什麼情況會用到序對呢?什麼情況又會用到字典呢?
練習
- 仿照 demo.cpp ,寫一個程式 exercise0301.py ,裡頭建立一個變數 a ,依序指派 1 、 "2" 、 3.0 給 a ,然後印在命令列上。
- 寫一個程式 exercise0302.py 宣告布林型態的變數 a ,並將 a 設定為 True ,然後在命令列印出 a 與 not a 。
- 寫一個程式 exercise0303.py ,用 '*' 印出一個三角形。
the end
沒有留言:
張貼留言