# Python 中的加減乘除：從四則運算搞懂 Expression


<!--more-->

## 前言

本篇是 Python 程式語言入門教學系列的第二篇文章。上一篇我們把環境準備好了，這一篇開始真的動手寫 Python 程式碼：從生活中最熟悉的「加減乘除」下手，把數學算式寫成電腦看得懂的程式。

除了四則運算之外，這篇也會帶到 Expression（表達式）這個概念。它聽起來很學術，其實就是你從小寫到大的「算式」，只是換成程式的說法。搞懂它，後面學變數、條件判斷都會順很多。

## 開啟並命名 Colab

在[前一篇文章](../google-colaboratory/)中，我們介紹了 Google Colaboratory（Colab）這款好用的線上編輯器。它跑在瀏覽器裡，不用在自己電腦上裝 Python，對初學者來說是最沒有負擔的起手式。

在開始撰寫 Python 程式碼前，先到雲端硬碟中新增一個 Colab 檔案，並給它一個好認的名稱。之後每一段程式碼，都會寫在 Colab 的儲存格（Cell）裡執行。

## 基本的加減乘除運算

先來寫一個最簡單的程式：計算 123 + 456 等於多少？這題用計算機一秒就能算出來，而以 Python 程式碼來說，寫法幾乎和數學算式一模一樣：

```python
123 + 456
```

在 Colab 的儲存格（Cell）中執行這行程式碼，就會直接看到答案。同理，如果我們希望計算 907 - 456 等於多少，你一定可以馬上寫出程式：

```python
907 - 456
```

乘法和除法則要注意符號跟數學課本不太一樣：乘號用星號 `*`，除號用斜線 `/`，而不是 `x` 和 `÷`。以下分別計算 1445 x 404 與 1309 ÷ 56 的答案：

```python
1445 * 404
1309 / 56
```

如果上面這幾題你都寫得出來，那你已經學會如何用 Python 進行四則運算了。

## 了解 Expression 的概念

接著來看 Expression 的概念。實際上，我們剛剛所撰寫的那幾行程式碼，就是 Expression（表達式）。

{{< image src="expression.jpg" alt="Expression 的組成示意圖，標示出算式中的 Value（數值）與 Operator（運算子）兩個部分。" caption="Expression 的概念" >}}

由上圖可以發現，Expression 由兩種東西組成：Value（數值）與 Operator（運算子）。用更白話的方式理解，Expression 就是數學的「算式」，裡面包含了很多「數值」以及「運算符號」。

Expression 的特色在於能夠被 Evaluate（運算），可以從一個很長的「式子」運算成一個「數值」。例如 2 + 2 + 2 + 2 + 2 + 2 是一個 Expression，可以被 Evaluate 為 12。所以前面那些程式碼在做的事情，就是我們寫下一行 Expression，再交由電腦 Evaluate 出結果：

```python
123 + 456
```

需要特別注意的是，電腦在 Evaluate 的過程中，會遵守「先乘除後加減」以及「括號內的東西先算」這樣的原則。這代表 `1 + 2 * 3` 得到的是 7 而不是 9，如果你真的想先算加法，就得自己補上括號寫成 `(1 + 2) * 3`。撰寫 Expression 時記得留意運算順序，否則會得到非預期的答案。

## 更進階的 Operator：`**`、`%` 與 `//`

在 Python 中，除了基本的加減乘除外，還有三個比較進階的 Operator。首先是 `**`，表示「次方」。例如，執行以下程式碼，計算「2 的 3 次方」：

```python
2 ** 3
```

`%` 則是表示「取餘數」。例如 15 ÷ 4 = 3（商數 3）⋯ 3（餘數 3）。如果我們希望在程式中計算 15 除以 4 的餘數，就可以透過 `%`：

```python
15 % 4
```

最後，`//` 表示「取商數」。同樣以 15 ÷ 4 為例，如果我們希望在程式中計算 15 除以 4 的商數，就可以透過 `//`：

```python
15 // 4
```

這裡順帶提一個容易搞混的地方：`/` 算出來的是一般的除法結果，`//` 則只保留整數的部分。兩個看起來只差一個斜線，用途卻完全不同。

## Syntax Error

{{< image src="syntax-error.jpg" alt="Colab 中執行錯誤程式碼後跳出 SyntaxError 錯誤訊息的畫面。" caption="程式初學者常見的錯誤：Syntax Error" >}}

「Syntax Error」是在寫程式時經常會看到的錯誤訊息，中文是「語法錯誤」，也就是電腦在告訴我們：你寫的 code 語法有問題啦！以上圖而言，我們原本希望計算：

```python
1 + 3 * 4
```

然而，卻漏打了 3 變成：

```python
1 + * 4
```

加號的後方直接遇到乘號，當然沒有辦法運算，因此電腦就顯示了 Syntax Error 的錯誤訊息。看到這個訊息時先別緊張，它通常代表某個地方少打或多打了字元，回頭把那一行讀過一遍就找得出來。

另外補充一點：在撰寫 code 時，我們經常會在數字與符號之間加入「空白」。這裡的空白並不會造成語法錯誤，純粹是為了讓程式碼看起來更整齊、簡潔。

## 結論

在本篇文章中，我們學習了 Python 最基礎的語法以及 Expression 的概念，並以 Python 程式碼實作各種不同的數學運算，包含加減乘除與 `**`、`%`、`//` 三個進階的 Operator。順帶也認識了初學者最常遇到的 Syntax Error 是怎麼一回事。

在[下一篇文章](../python-variable-data-type/)中，將會介紹程式中「變數」（Variable）的概念，讓我們可以把算出來的結果存起來重複使用，而不是每次都重寫一次算式。

