Python 入門指南

單元 3 - 資料型態與變數

本書已有新版,請參考 Python 入門指南 5.00 - 目錄

~~學習進度表~~

Python 內建許多有用的資料型態 (data type) ,像是整數 (integer)浮點數 (floating-point number)字串 (string)

int float complex
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.20.2352.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歸位符號
\ttab 鍵
\v垂直定位符號
\\印出反斜線
\?印出問號
\'印出單引號
\"印出雙引號

另外有三個常數 (constant) 很特別,表示真假值TrueFalse ,還有表示什麼都不是的 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) ,如上例 b0 個元素為 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. 為什麼要有 NoneNone 在程式中的用途為何?
3. 為什麼資料型態要分成有可變與不可變的?兩者的主要差別在哪裡?
4. 什麼情況會用到串列呢?什麼情況會用到序對呢?什麼情況又會用到字典呢?
練習
1. 仿照 demo.py ,寫一個程式 exercise0301.py ,裡頭建立一個變數 a ,依序指派 1"2"3.0a ,然後印在命令列上。
2. 寫一個程式 exercise0302.py 宣告布林型態的變數 a ,並將 a 設定為 True ,然後在命令列印出 anot a
3. 寫一個程式 exercise0303.py ,用 '*' 印出一個三角形。

相關教學影片

上一頁 單元 2 - 如何執行 Python 程式
回 Python 入門指南首頁
下一頁 單元 4 - 變數命名規則與縮排
回 Python 教材首頁
回程式語言教材首頁