Python 初學第二講 — 資料型態與轉換

Python 內建資料形態的介紹與應用

陳子晴
ccClub
9 min readSep 20, 2018

--

上一講介紹完基本的輸出、變數與字串以後,我們已經可以用 Python 來做最簡單的運算、以及列印出想說的話了!
本篇就來介紹 Python 的一些內建型態、以及不同型態之間的轉換。

在 Python 當中,所有東西都是一個物件。物件可以當作是 Python 當中的最小單位,所以接下來要介紹的內建資料型態,都可以是物件。

Python 的內建型態主要分為以下三種:

  1. 數值型態:int, float, bool
  2. 字串型態:str, chr
  3. 容器型態:list, dict, tuple

數值資料型態 Numeric Data Types

1. 整數 integer( int )

我們在前一篇變數介紹的部分中,曾經產生過一個變數 x ,並且讓 x = 1 , x 就是一個整數( integer)。

如果要查詢變數的資料形態,可以使用 type() 這個函數來查詢。
下面來試著印出 x這個變數以及 x 所屬於的資料形態:

執行結果如下:

印出 type(x)會得到 x 的形態 int ,表示 x 是一個整數。

2. 浮點數 floating-point (float)

上面產生了整數 x = 1 ,如果把他改寫成 x = 1.5 ,此時 x 就不是整數了,而是一種浮點數( float )。

浮點數的儲存空間比整數大,所以可儲存含有小數點的實數。

你也可以自己試試看把 x 設成 3.14 或是 1.732 ,會發現到他們的資料型態都是 float

3. 布林值 boolean (bool)

在 Python 產生布林值可設定為兩種值 : True 還有 False
下面我們來試一個範例:

輸入完以上的指令後,執行結果如下:

印出 type(a)後 ,會看到 'bool' ,表示 a 的資料型態是 bool ,也就是布林值。你也可以試著把 a = True 改成 a = False ,所印出的 type(a) 也會相同,因為他們都是布林值。

布林值通常是一個運算的結果,範例如下 :

其中 a==b 是一個運算結果,會回傳 a 是否等於 b。
因為 a 的值是 1、b的值是 2,所以 a 不會等於 b。
a==b 這個布林值的值就會是 False

字串/字元資料型態 String/Character Data Types

1. 字串 string (str)

字串資料是以單引號 (')或雙引號(")所包起來的文字資料,由一連串字元所組成。例如:

所執行的結果如下:

通常使用單引號或是雙引號的時機沒有一定,但若是你的字串中本身就包含單引號或是雙引號,就可以使用另一種引號以利區別。

例如想要印出這個字串:
“Bohemian Rhapsody” is a song by the British rock band Queen.

其中把“Bohemian Rhapsody”這首歌括號起來,會使 Python 認為要印出的字串為 “ “(空字串)、以及” is a song by the British rock band Queen.”,因而出現錯誤訊息。

此時比較好的做法就是改使用單引號來表示字串。

改成這樣就會印出想要的結果了~

字串的處理

字串處理是 Python 的強項之一。 在 Python 中,支援許多字串的運算方式。以下介紹四種很常見的功能:

(1) 字串相加
+這個運算子能夠將兩個字串連接起來,例如:

運算的結果如下:

(2) 重複印出字串
利用 *可以重覆字串的內容。前面在講 print 時有提到這個功能。只需要輸入字串與 * 再加上想要重複印出的字串即可。例如:

執行的結果:

(3) 計算字串長度
利用 len() 這個函式會回傳字串的長度,例如:

執行的結果會如下,len()回傳了6,代表字串 str 中總共有六個字元。

(4) 取出部分字串
利用中括號[]可以取出字串的部份內容。
和一般我們在數數字時從 1 開始數不同,字串的索引值(index)是從 0 開始的,str[4] 代表要取出 str 字串裡面的 第 5 個字元 "o"

如果想要取出某一個範圍的字串時,就在括號中設定開始與結束的位置,也就是左邊界與右邊界。

值得注意的是,字串只會取到所設定結束位置的前一個字元,並不會包含右邊界的本身。所以 str[1:4]就是從 str 字串中的第二個字元取到第四個字元,不會包含 str[4] 本身。

Note: 在 Python 中,使用 []取部分內容這個動作叫 slicing

可以看到, str[1:4] 是取第二到第四個字元,也就是 index 1~3 所代表的字元,並不會包含到 str[4] 這個字元。

2. 字元 character (chr)

字元就是組成字串的元素。
例如在字串 Python 中, 'p', 'y', 't', 'h', 'o', 'n' 每個字母都是一個字元。

原則上來說,由於電腦是使用 bit 在存東西,所以電腦所存的東西都是數字、無法直接存取字元,所以會使用相對應的數字代碼來代表不同的字元。

在很多電腦中,以英文為主的文字處理使用的是 ASCII codeASCII code 在制定上保留了符號上的順序性。例如 "0" 的 ASCII code 是 48、"1" 是49, "A" 的 ASCII code 是 65,而 "a" 的是 97,以此類推。

至於非英文的語言,現在多使用 Unicode 這個內碼制來儲存多國的語言。 Unicode 使用更多的空間來儲存編碼,可以表達的符號多達三萬多個,像是中文就可以用 Unicode (或是 UTF-8 ) 來編碼。

以 ASCII code 文字代碼轉換的例子來說:

c 這個變數本身是一個整數(int),我們使用一個型別轉換的函式 chr() 來把 66 這個數字轉成字元,並且把它 assign 給另為一個變數 cAsChr,所得到的結果如下:

cAsChr 印出來的結果會是 "B",就是將 66 這個數字以 ASCII code 轉換成字元的結果。

Casting 型別轉換

我們可以將一個值從一種型態轉變為另外一種型態,這樣的過程就叫做casting。

如果想要將一個型態為浮點數 (float) 的值轉變為整數 (int) 的資料型態,我們會使用 int() 這個函式來作轉換。
以下是將 float 轉成 int 的結果:

而如果是想要將一個字串 (str) 轉為整數呢?

如果是想要將 55.55 轉換成整數呢?可以自己嘗試在 Jupyter Notebook 上轉換看看。 轉換成整數過後,小數點會直接被捨去掉,變成 55

如果要轉換其它資料型別,可以試試 str()float()chr() 這些函數,會將原本的值分別轉換為字串、浮點數以及字元。

值得注意的是,如果本來的值就無法這樣轉換 (例如想要把字串轉換成整數),就會出現 Value Error。

字串轉換成整數會出現value error

現在我們學會了 Python 中的數值、字串與字元的資料型別,以及不同型別之間的轉換方式,下一篇將會介紹程式語言很重要的精髓之一,條件判斷,可以讓你的程式根據不同的狀況來執行不同結果。

--

--