Python 入門指南 V2.00 - 單元 3 - 資料型態與變數




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.20.2352.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歸位符號
\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)

除此之外, 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) ,如上例 b0 個元素為 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

重點整理


  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.cpp ,寫一個程式 exercise0301.py ,裡頭建立一個變數 a ,依序指派 1"2"3.0a ,然後印在命令列上。
  2. 寫一個程式 exercise0302.py 宣告布林型態的變數 a ,並將 a 設定為 True ,然後在命令列印出 anot a
  3. 寫一個程式 exercise0303.py ,用 '*' 印出一個三角形。

the end

沒有留言: