【NLP】Day 2: 工欲善其事,必先利其器!Python基礎介紹!

萬事開頭難,難就難在初始階段。在此期間,必須窮盡心力,使諸方面保持均衡,以利於今後的發展。
法蘭克・赫伯特《沙丘》

在一起踏上偉大的航道前,由於在這三十天會運用Python作為主要的程式語言,所謂工欲善其事,必先利其器,畢竟就連魯夫一開始出海前,也是需要一艘船嘛!所以免不了總是要稍微解釋一下在之後的文章會用到的簡單語法以及概念。

但因為在我之前已經有許多大神以及前輩寫了許多Python的教學文章,Python開發者社群也有翻譯官方文件,而且翻譯得非常清楚,所以今天這篇文章只會解釋Python中最常用的語法,也就是基本的資料型態、for迴圈以及if條件敘述式,還有function,也會解釋一份Python的程式,大致上會有什麼架構,畢竟大學的計算機概論教授有云:「你只要會寫for迴圈以及會寫if,你會寫程式啦!」有點誇張了,但相信你可以的。

不過如果之後的文章用到其他在這裡沒有解釋到的語法,也會在那篇文章特別介紹。

資料型態以及資料結構

Python共有種的資料型態以及種的資料結構,不同的型態與結構,在不同的使用情境下有不同的用途,以下幫助你簡單理解:

字串 string

字串顧名思義就是單純字串,一般來說會以雙引號來表示,例如"偉大航道"就是一種字串,但單引號也可以,像是'偉大航道',只是大部分都會用雙引號,而且字串也不能進行數學上的四則運算,在程式編寫上要特別留意。性質如下:

1
2
print("1"+"2"+"3") 
# output: 123

你也可以將其他種資料型態透過str()轉換成字串:

1
2
3
4
num = 123
num_string = str(num)
type(num_string)
# output: str

整數 int & 浮點數 float

整數就是整數,這不需要特別說明。浮點數就是有小數點的數字,也就是小數!而這兩種資料型態分別可以透過int()以及float()來轉換。這兩種資料型態可以進行四則運算,讓我們來看看以下例子:

1
2
print(1+2+3)
# output: 6

前面已經了解到,資料型態也可以用對應的函式互相轉換,但要特別注意的是,不同資料型態不能混在一起運算。

1
2
3
4
5
6
7
8
print(123+"123")
# output:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-3-a752e60be039> in <module>
----> 1 123+"123"

TypeError: unsupported operand type(s) for +: 'int' and 'str'

但浮點數跟整數間可以進行四則運算嗎?我們來試試看:

1
2
print(1.23+123)
# output: 124.23

這兩者之間由上可知是可以進行四則運算的喔!

串列 list

list用中括號表示,可以將前述講到的資料,像火車一樣一個一個分別存在不同車廂裡面,並以逗號分隔。即使不同資料型態也可以一起放進去。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 建立新的空串列,並命名為example
example = []
# 預設資料
example = [1,2,3]
# 將資料加入串列的最尾端
example.append(123)
print(example)
# output: [1, 2, 3, 123]
# 不同的資料型態也可以存在同一個串列中
example.append("海賊王")
print(example)
# output: [1, 2, 3, 123, "海賊王"]
# 轉換方式則可以透過list(),如:

字典 dictionary

dictionary則是用大括號表示,是python特有的資料型態,像是字典一樣,每個字都有其對應的意義。那麼當值與值之間互相對應的時候,就可以透過dict()來表示:

1
2
3
4
5
6
7
8
9
10
11
# 建立新的空字典,並命名為example
example = {}
# 字典形式分成key跟value,每個key有對應的value,並用冒號表示:
example = {
"魯夫": "船長",
"索隆": "戰鬥員",
"娜美": "航海士",
}
# 並透過以下方式取出值(value):
print(example['魯夫'])
# output: 船長

Python語法

那接下來就讓我們來看看可以透過哪些方式操作以上這些資料吧!

for迴圈

for迴圈,顧名思義,如果你需要重複做某件相同的事時,就可以透過for迴圈讓程式來幫你做,你可以指定迴圈運行的次數,或是讓迴圈「遍歷」串列或是字典的key或是value,但方式有點不一樣。常用的寫法如下:

1
2
3
4
5
6
7
8
9
10
example = [1, 2, 3, 123, "海賊王"]
for i in example:
print(i)

# output:
# 1
# 2
# 3
# 123
# 海賊王
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 字典本身不能遍歷,但可以遍歷key或是value
example = {
"魯夫": "船長",
"索隆": "戰鬥員",
"娜美": "航海士",
}
for i in example.keys():
print(i)
# output:
# 魯夫
# 索隆
# 娜美
for i in example.values(): # 要加s
print(i)
# output:
# 船長
# 戰鬥員
# 航海士

for迴圈也有另外一種常見的寫法,我們來看看:

1
2
3
4
5
6
7
8
9
example = [1, 2, 3, 123, "海賊王"]
for i in range(len(example)):
print(i)
# output:
# 1
# 2
# 3
# 123
# 海賊王

其中用到了兩個之前沒用過的函式,分別是range()以及len()range()中的參數代表的就是讓i運行這個次數,len()則是串列的長度,那這行就是讓for迴圈運行串列長度的次數。

if條件敘述式

當程式達到某特定條件時,可以透過if,指定程式執行其他動作,一般會在迴圈中使用。用法如下:

1
2
3
4
5
example = [1, 2, 3, 123, "海賊王"]
for i in range(len(example)):
if i == "海賊王":
print(i)
# output: 海賊王

若有不同條件,則可以透過elif來指定條件。

1
2
3
4
5
6
7
8
9
example = [1, 2, 3, 123, "海賊王"]
for i in range(len(example)):
if i == "海賊王":
print(i)
elif i == 1:
print(i)
# output:
# 海賊王
# 1

若執行了if就不會執行elif,若包含elif條件就只能擇一。但如果全部都寫if就所有條件都會檢驗一遍。

1
2
3
4
5
6
7
8
9
10
11
12
example = [1, 2, 3, 123, "海賊王"]
for i in range(len(example)):
if i == "海賊王":
print(i)
elif i == 1:
print(i)
example = [1, 2, 3, 123, "海賊王"]
for i in range(len(example)):
if i == "海賊王":
print(i)
if i == 1:
print(i)

最後前面的條件都不符合,但也要對其進行處理,則可以用else

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
example = [1, 2, 3, 123, "海賊王"]
for i in range(len(example)):
if i == "海賊王":
print(i)
elif i == 1:
print(i)
else:
print("我是else")
# or
example = [1, 2, 3, 123, "海賊王"]
for i in range(len(example)):
if i == "海賊王":
print(i)
if i == 1:
print(i)
else:
print("我是else")

跳出迴圈可以用break,繼續執行迴圈可以用continue

1
2
3
4
5
6
7
8
example = [1, 2, 3, 123, "海賊王"]
for i in range(len(example)):
if i == "海賊王":
break
if i == 1:
continue
else:
print("我是else")

def 函式

不知道大家還記不記得國高中的函數,給定一個x值,函數會計算出y值;同理,一樣是function,程式中也會有所謂的函式,括號中給定參數,函式則會回傳值,或是不回傳值只執行特定動作也可以。當你發現一直在重複相同動作又要寫很多次的時候,就是函式派上用場的時候了。

1
2
3
4
5
6
7
8
9
def example_func(parameter_1):
result = 1 + parater_1
return result

# 在這裡你可以回傳值,也可以將回傳值指配給變數,如:

result_var = example_func(2)
print(result_var)
# output: 3

好的!大致上會用到的基本語法就是這樣,若想知道更多可以去看官方說明文件,網路上也有很多的教學,明天就要進入偉大航道了,我們明天見。