Python 內建許多有用的資料型態 (data type) ,像是整數 (integer) 、浮點數 (floating-point number) 、字串 (string) 等
list range str tuple
dict
set
不含小數點的數字為整數,含小數點就是浮點數,使用上不必太擔心,字面常數 (literal) 形式就是物件 (object) ,例如
# 印出 0.2 比例的兩個整數
print(0.2.as_integer_ratio())
# 判斷 0.235 是否為整數
print(0.235.is_integer())
# 判斷 2.000 是否為整數
print(2.000.is_integer())
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:typedemo01.py
# 功能:示範 Python 浮點數型態的方法
# 作者:張凱慶 */
在 Python 中,數字 0.2 、 0.235 、 2.000 都是物件,此例分別呼叫浮點數 float 型態 (type) 的 as_integer_ratio() 與 is_integer() 方法 (method) ,然後用內建函數 (built-in function) print() 印出結果。
字串則是用單引號或雙引號圍起來的內容,使用上兩者並無差別,若有需要在雙引號字串中使用單引號,可以把單引號直接寫進雙引號中,反之亦然,另外字串也可使用跳脫序列 (escape sequence) ,例如
# 印出 Hello world!
print("Hello world!")
# 印出 Hello world!
print("Hello\tworld!")
# 印出 John's Treasure!
print("John's Treasure!")
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:typedemo02.py
# 功能:示範 Python 中的引號及跳脫序列
# 作者:張凱慶 */
跳脫序列是一些不可見字元,由反斜線 \ 開始,然後接一些特定的英文字元,常見的有
跳脫序列的字元 | 說明 |
---|---|
\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)
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:typedemo03.py
# 功能:示範 Python 中的布林型態
# 作者:張凱慶 */
除此之外, 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])
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:typedemo04.py
# 功能:示範 Python 中的串列型態
# 作者:張凱慶 */
串列的字面常數為用中括弧圍起來的資料,這些資料被稱為元素 (element) ,元素可以是任意型態的常數或變數,每個元素均以英文逗點分開。我們可以在串列變數後用中括弧存取裡頭的元素,中括弧裡頭用以 0 開始的索引值 (index) ,如上例 b 第 0 個元素為 1 ,第 2 個元素為 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])
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:typedemo05.py
# 功能:示範 Python 中的序對型態
# 作者:張凱慶 */
序對的字面常數為利用小括弧圍起來的資料,裡頭同樣可以是任意型態的常數或變數,取得元素的方式如同串列用中括弧及索引值。一旦建立序對型態的物件後,該物件就不能更新裡頭的元素。
其他還有非常多內建的複合資料型態,常用的還有字典 (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"])
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:typedemo06.py
# 功能:示範 Python 中的字典型態
# 作者:張凱慶 */
同樣的,存取 value 亦是用中括弧,中括弧裡頭放 key 。通常字典的 key 是用不可變的資料型態,例如數字或字串,至於 value 則沒有限制。
介紹了很多種資料型態的物件,可是物件還是用變數存取才比較方便。接下來,我們繼續討論變數命名的規則。
中英文術語對照 | |
---|---|
複合資料型態 | compound data type |
常數 | constant |
資料型態 | data type |
字典 | dictionary |
元素 | element |
跳脫序列 | escape sequence |
浮點數 | floating-point number |
函數 | function |
不可變的 | immutable |
索引值 | index |
整數 | integer |
關鍵字 | keyword |
串列 | list |
字面常數 | literal |
方法 | method |
可變的 | mutable |
物件 | object |
字串 | string |
序對 | tuple |
變數 | variable |
重點整理 |
---|
1. Python 內建的資料型態有整數、浮點數、字串、串列、序對、字典等。 |
2. 整數或浮點數的字面常數就是物件,可如同物件變數呼叫方法。 |
3. 字串是單引號或雙引號圍起來的內容。 |
4. 跳脫序列是一些不可見字元,由斜線開始。 |
5. True 為邏輯上的真, False 為邏輯上的假, None 則是表示虛無,也就是什麼都沒有。 |
6. 串列的字面常數為中括弧圍起來的內容,其內以逗號區隔每個元素。 |
7. 序對的字面常數為小括弧圍起來的內容,其內以逗號區隔每個元素。 |
8. 串列是可變的資料型態,序對則是不可變的資料型態。 |
9. 字典的字面常數的為大括弧圍起來的內容,其內以逗號區隔每個 key:value 配對值, key 通常用不可變的資料型態, value 則沒有限制。 |
問題與討論 |
---|
1. 字串、串列、序對通常合稱序列 (sequence) ,試著找出他們相似的地方。 |
2. 為什麼要有 None ? None 在程式中的用途為何? |
3. 為什麼資料型態要分成有可變與不可變的?兩者的主要差別在哪裡? |
4. 什麼情況會用到串列呢?什麼情況會用到序對呢?什麼情況又會用到字典呢? |
練習 |
---|
1. 仿照 demo.py ,寫一個程式 exercise0301.py ,裡頭建立一個變數 a ,依序指派 1 、 "2" 、 3.0 給 a ,然後印在命令列上。 |
2. 寫一個程式 exercise0302.py 宣告布林型態的變數 a ,並將 a 設定為 True ,然後在命令列印出 a 與 not a 。 |
3. 寫一個程式 exercise0303.py ,用 '*' 印出一個三角形。 |
相關教學影片
- 第二堂課導覽 ⇨ YouTube 頁面連結
- Python 的資料型態、變數與物件 ⇨ YouTube 頁面連結
- Python 的內建資料型態 - 真假值 ⇨ YouTube 頁面連結
- Python 的內建資料型態 - 整數 ⇨ YouTube 頁面連結
- Python 的內建資料型態 - 浮點數 ⇨ YouTube 頁面連結
- Python 的內建資料型態 - 複數 ⇨ YouTube 頁面連結
- Python 的內建資料型態 - 字串與跳脫序列 ⇨ YouTube 頁面連結
- Python 的內建資料型態 - 串列 ⇨ YouTube 頁面連結
- Python 的內建資料型態 - 序對 ⇨ YouTube 頁面連結
- Python 的內建資料型態 - range ⇨ YouTube 頁面連結
- Python 的內建資料型態 - 位元組與位元組陣列 ⇨ YouTube 頁面連結
- Python 的內建資料型態 - 字典 ⇨ YouTube 頁面連結
- Python 的內建資料型態 - 集合 ⇨ YouTube 頁面連結
- Python 的內建型態轉換規則 ⇨ YouTube 頁面連結
- Python 的物件模型 ⇨ YouTube 頁面連結
- 第二堂課舉一反三 ⇨ YouTube 頁面連結