【專題課程】Python 入門 – 變數與資料型別

還記得大一與大二所學過的程式語言有哪些嗎?不論是什麼程式語言,幾乎都逃不過 int、float、bool 等等的字眼,而這些字眼卻在許多地方可以派上用場,例如你要做加減乘除、抓資料或做判斷等,所以接下來我們就要介紹變數與資料型態之間的用途與關係。

*本文配合專題指導老師所推薦的「Python 變數與資料型態 By 彭彭」進行教學撰寫。
*本文以「W3Schools – Python Data Types」、「自學成功道」、「ccClub」等做為參考資料。

變數

變數指的是用來存放資料的自訂名稱,就像是你新增一個 Word 檔案,需要幫他取檔案名稱一樣,這個檔案名稱是可以自訂的,但每個程式通常都有保留字,若是使用到保留字很可能會出現錯誤。

請記得,身為一個良好的程式設計師,你需要為變數取一個合適且合理的名稱。

資料值(Value)

資料值是程式中的基本項目之一,例如在上篇的教學中,我們印出了字串「Hello world」,或是數字「123」就屬於資料值中的數值

資料型別 (Data type)

不同的值屬於不同的資料型態,同時也可以做到不同的事情,先帶你來看看 Python 的資料型別:

數值型別(Numeric Types): 整數(int)、浮點數(float)、長整數(complex)

字串型別(Text Type): 字串(str)

布林型別(Boolean Type):布林值(bool)

序列型別(Sequence Types):可變列表(list)、固定列表(tuple)
(註:因轉換為整數列表(map)製作整數列表(range)在 Python 3 版本就被改為迭代(Iteration),故在此文章中不做教學。)

字典型別(Mapping Type):字典(Dictionary)

集合型別(Set Types):集合(set)、凍結集合(frozenset)

二進制型別(Binary Types): 位元組(bytes)、位元陣列(bytearray)、記憶體檢視(memoryview)

數值型別(Numeric Types)

整數(int):不含真分數或無理數的數,包括零、自然數與帶負號的自然數,例如以下數字:

0
12
123

浮點數(float):我們又稱為小數,他的儲存空間比整數來的更大,可儲存含有小數點的實數,例如以下數字:

1.134
3.59
40.57

字串型別(Text Type)

字串(str):指的是字元序列,包含了中文、英文、數字、空格、符號等,可運用單引號、雙引號、三重引號(三個單引號、三個雙引號)來框住字元,例如以下文字:

'Hello,Taipei!'
"Hello,Taipei!"
'''Hello,Taipei!'''
"""Hello,Taipei!"""

布林型別(Boolean Type)

布林值(bool):用來判斷(True)或(False),就像是電路中通電代表1,不通電代表0,在程式裡面表達只需要用TrueFalse即可,例如以下程式碼:

True
False

序列型別(Sequence Types)

可變列表(list):用來儲存一連串有順序性的資料值(Value),具有可變性,以中括號([])框起來,並於中括號內以逗號(,)來進行分隔,例如以下程式碼:

[1,2,3]
['Hello','yuhao.tw']
["你好","yuhao.tw"]

固定列表(tuple):用來儲存一連串有順序性的資料值(Value),具有不可變性,也就是你不可以修改 tuple 裡面的任何資料值,以小括號(())框起來,並於小括號內以逗號(,)來進行分隔,例如以下程式碼:(提醒:tuple 在新增只有一個資料值時,需要加上逗號,否則無法運作。)

(1,)
(1,2)
(1,2,3)

字典型別(Mapping Type)

字典(Dictionary):由鍵(key)和資料值(Value)組成,用來儲存複雜的資料,以大括號({})框起來,並於大括號內以逗號(,)來進行分隔,若有多個資料值可用字串寫法框起來,例如以下程式碼:(推薦觀看:「Python 初學第九講 — 字典」)

{"apple":"ios","Google":"Android"}
{"臺北市":["北投區","信義區","中正區","大安區","文山區"]}

集合型別(Set Types)

集合(set):由鍵(key)組成,具有不重複資料的特性,通常可以用來去除重複的資料,亦或是判斷資料值是否有交集、聯集等,以小括號(())或大括號({})框起來,可以是空集合(set()),若有多個資料值可用字串寫法框起來,例如以下程式碼:

set()  -> 
set([0,1,2,3,3,1,0])  ->  0,1,2,3
set({'x':1,'y':2,'z':3})  -> x,y,z
set('taipei') -> t,a,i,p,e

凍結集合(frozenset):由鍵(key)組成,與集合(set)相似,具有不重複資料不可變特性,因集合(set)中的資料值必須為不可變類型,故可以透過凍結集合(frozenset)來放入集合(set)中,以小括號(())或大括號({})框起來,可以是空集合(set()),若有多個資料值可用字串寫法框起來,例如以下程式碼:

frozenset()  -> 
frozenset([0,1,2,3,3,1,0])  ->  0,1,2,3
frozenset({'x':1,'y':2,'z':3})  -> x,y,z
frozenset('taipei') -> t,a,i,p,e

二進制型別(Binary Types)

位元組(bytes):用來儲存 8bit(byte) 的無號整數(0及正整數),介於 0 到 255,具有不可變性,以小括號(())框起來,並於小括號內以逗號(,)來進行分隔,若有多個資料值可用字串寫法框起來,也可以將字串以 UTF-16 編碼轉為位元組,例如以下程式碼:(如果資料值只傳入一個正整數的n,則會建立長度為n,並由 null 字元組成。)(推薦觀看:「Python 位元組序列 bytes 使用教學與範例」)

bytes(5)  ->  b'\x00\x00\x00\x00\x00'
bytes([1, 2, 3, 4])  ->  b'\x01\x02\x03\x04'
bytes("hello", "ascii")  ->  b'hello'
bytes("python", "utf-16")  ->  b'\xff\xfep\x00y\x00t\x00h\x00o\x00n\x00'

位元陣列(bytearray):用來儲存 8bit(byte) 的無號整數(0及正整數),介於 0 到 255,具有可變性,以小括號(())框起來,並於小括號內以逗號(,)來進行分隔,若有多個資料值可用字串寫法框起來,也可以將字串以 UTF-16 編碼轉為位元組,例如以下程式碼:(如果資料值只傳入一個正整數的n,則會建立長度為n,並由 null 字元組成。)(官方說明:「Python Binary Sequence Types」)

bytearray(5)  ->  bytearray(b'\x00\x00\x00\x00\x00')
bytearray([1, 2, 3, 4])  ->  bytearray(b'\x01\x02\x03\x04')
bytearray("hello", "ascii")  ->  bytearray(b'hello')
bytearray("python", "utf-16")  ->  bytearray(b'\xff\xfep\x00y\x00t\x00h\x00o\x00n\x00')

記憶體檢視(memoryview):用來查詢位元值的資料值,在 Python2 與 3 之間的呈現效果有些差異,例如以下程式碼:(參考來源:RUNOOB|Python bytearray() 函数

Python 2
a = memoryview('abcefg')  ->  v[1] = 'b'
Python 3
a = memoryview(bytearray("abcefg", 'utf-8'))  ->  print(v[1])
 = 98

發佈留言