(Python)-初學 Class-2 — 資料型態與轉換

(Python)-初學 Class-2 — 資料型態與轉換

Python-初學 Class-2 — 資料型態與轉換

 

上一講介紹完基本的輸出、變數與字串以後,我們已經可以用 Python 來做最簡單的運算、以及列印出想說的話了!

本篇就來介紹 Python 的一些內建型態、以及不同型態之間的轉換。

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

 

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

 

數值型態:int, float, bool 字串型態:str, chr 容器型態:list, dict, tuple 數值資料型態 Numeric Data Types

 

3-1-1 數值資料型態 Numeric Data Types

 

1. 整數 integer( int )

我們在前一篇變數介紹的部分中,曾經產生過一個變數 x ,並且讓 x = 1 , x 就是一個整數( integer)。 如果要查詢變數的資料形態,可以使用 type() 這個函數來查詢。 下面來試著印出 x這個變數以及 x 所屬於的資料形態:

 

Learn 1 :

x = 1

print(x)

print(type(x))

1 <class ‘int’>

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

 

2. 浮點數 floating-point (float)

上面產生了整數 x = 1 ,如果把他改寫成 x = 1.5 ,此時 x 就不是整數了,而是一種浮點數( float )。 浮點數的儲存空間比整數大,所以可儲存含有小數點的實數。

 

Learn 2 :

x = 1.5

print(x)

print(type(x))

1.5 <class ‘float’>

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

 

3. 布林值 boolean (bool)

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

 

Learn 3 :

a = True

print(a)

print(type(a))

True <class ‘bool’>

——

a = 1

b = 2

print(a==b)

False

 

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

 

3-1-2 字串/字元資料型態 String/Character Data Types

 

1. 字串 string (str)

字串資料是以單引號 (‘)或雙引號(“)所包起來的文字資料,由一連串字元所組成。

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

 

Learn 4 :

song = "Hello, Goodbye"

print(song)

print(type(song))

——

print(‘”Bohemian Rhapsody” is a song by the British rock band Queen.’) “Bohemian Rhapsody” is a song by the British rock band Queen.

這樣使用二種引號就會印出想要的結果了~

 

3-1-2 字串的處理

 

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

(1) 字串相加

+這個運算子能夠將兩個字串連接起來。

 

Learn 5 :

str1 = "Lucy in the sky"

str2 = " with diamonds"

print(str1 + str2) Lucy in the sky with diamonds

 

(2) 重複印出字串

利用 *可以重覆字串的內容。只需要輸入字串與 * 再加上想要重複印出的字串即可。

Learn 6 :

str = " ccClub"

print(str*3)

ccClub ccClub ccClub

 

(3) 計算字串長度

利用 len() 這個函式會回傳字串的長度。

Learn 7 :

str = "Python"

print(str)

print(len(str))

Python 6

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

 

(4) 取出部分字串

 

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

 

Learn 8 :

str = "Python"

print(str[4])

o

——

 

str = "Python"

print(str[1:4])

print(str[4])

yth o

 

如果想要取出某一個範圍的字串時,就在括號中設定開始與結束的位置,也就是左邊界與右邊界。 值得注意的是,字串只會取到所設定結束位置的前一個字元,並不會包含右邊界的本身。所以 str[1:4]就是從 str 字串中的第二個字元取到第 四個字元,不會包含 str[4] 本身,也就是 index 1~3 所代表的字元,並不會包含到 str[4] 這個字元。

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

 

3-2 字元 character (chr):

 

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

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

在很多電腦中,以英文為主的文字處理使用的是 ASCII code。ASCII code 在制定上保留了符號上的順序性。例如

“0” 的 ASCII code 是 48、 “1” 是49, “A” 的 ASCII code 是 65,而 “a” 的是 97,以此類推。

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

 

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

 

Learn 9 :

c = 66

cAsChr = chr(c)

print(cAsChr)

B

 

c 這個變數本身是一個整數(int),我們使用一個型別轉換的函式 chr() 來把 66 這個數字轉成字元,並且把它 assign 給另為一個變數 cAsChr,cAsChr 印出來的結果會是 “B”,就是將 66 這個數字以 ASCII code 轉換成字元的結果。

 

3-3 Casting 型別轉換

 

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

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

以下是將 float 轉成 int 的結果:

 

Learn 10 :

floatNum = 55.0

intNum = int(floatNum)

print(floatNum)

print(intNum)

print(type(floatNum))

print(type(intNum))

55.0 55 <class ‘float’> <class ‘int’>

——

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

Learn 11 :

stringNum = "55"

intNum = int(stringNum)

print(stringNum)

print(intNum)

print(type(stringNum))

print(type(intNum))

55 55 <class ‘str’> <class ‘int’>

 

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

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

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

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

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

 

免責聲明:

1.本影像檔案皆從網上搜集轉載,不承擔任何技術及版權問題

2.如有下載連結僅供寬頻測試研究用途,請下載後在24小時內刪除,請勿用於商業

3.若侵犯了您的合法權益,請來信通知我們,我們會及時刪除,給您帶來的不便,深表歉意。

 



發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *