###### tags: `Python 入門` Python 試試看 === 學習程式語言之前, 我們還是先了解一下甚麼是程式語言?然後再試著使用程式語言感受一下。 ## 甚麼是程式語言? 『語言』最簡單的用途就是人與人之間溝通使用, 兩個人之間必須使用雙方都能聽懂的語言, 而『**程式語言 (programming language)**』則是人與『電腦』之間溝通的語言, 想要請電腦幫我們做事, 就必須仰賴程式語言: ```graphviz digraph ProgrammingLanguage{ rankdir=LR; node [shape = record]; people [label="人"] computer [label="電腦"] draw [label="繪圖"] playMusic [label="播歌"] others [label="...."] download [label="下載"] people->computer [label="程式語言"] computer->draw [label="執行"] computer->playMusic [label="執行"] computer->others [label="執行"] computer->download [label="執行"] } ``` 你可能會想『我每天都在用電腦, 也沒有用到程式語言啊?』沒錯, 絕大多數的電腦使用者所使用的都是其他人幫你準備好的『**程式 (program)**』, 例如編修照片用的 Photoshop、播歌用的 kkbox、或是上網用的 Google Chrome 瀏覽器等等, 就是其他人使用程式語言寫好給大家 (當然有的需要付費 :moneybag: ) 使用的程式: ```graphviz digraph Application{ rankdir=LR; node [shape = record]; programmer [label="程式設計師"] computer [label="電腦"] subgraph cluster_apps{ label ="一般使用者\n的應用程式"; ps [label="Photoshop"] kkbox [label="kkbox"] browser [label="Firefox"] } subgraph cluster_func { label ="電腦端的\n對應功能"; draw [label="繪圖"] playMusic [label="播歌"] download [label="下載"] } programmer->ps[label="撰寫"] programmer->kkbox programmer->browser ps->computer[label="指揮"] kkbox->computer browser->computer computer->draw[label="執行"] computer->playMusic computer->download } ``` 如果遇到沒有適當的應用程式可以符合您的需求, 或是想要依照自己的方式執行某項功能時, 唯一的解決辦法就是自己**寫程式**了。舉個例子來說, 如果你有一份聯絡人的資料, 像是這樣: ``` 柯大安, 台北, 23259850 鄭中立, 中壢, 4221460 盧豐原, 台中, 25224684 ``` 這份資料裡面第 3 欄的電話號碼都少了區域號碼, 如果你想要依據第 2 欄的城市為第 3 欄加上區域號碼, 由於這份資料只有 3 個人, 最簡單的方法當然就是自己打開檔案手動一一加上去。可是如果這份資料有 1000 個人、甚至 10000 個人呢?這就是自己寫程式可以幫上忙的地方了。以下就是實際的程式: ```python= area_codes = { "台北":"02", "台中":"04", "中壢":"03" } contacts_file = open("contacts.txt") for contact in contacts_file: name, area, tel = contact.split(",") name = name.strip() area = area.strip() tel = area_codes[area] + "-" + tel.strip() print(name, area, tel) ``` 這段程式因為你還沒開始學 Python, 所以看不懂是正常的, 實際執行起來就像是這樣: ``` > py .\add_cdoe.py 柯大安 台北 02-23259850 鄭中立 中壢 03-4221460 盧豐原 台中 04-25224684 ``` 你可以看到第 3 欄已經自動加上了區碼了。如果沒有撰寫程式, 最慘的狀況就是一一手動加上區碼, 非常沒有效率。 世界上的程式語言百百種, 我們獨鐘 Python 的原因主要有以下三個: - **使用人數多、使用領域廣**:這表示有問題時容易找到人幫忙, 而且不同領域、行業的人都在用, 不會因為要做不同的事情就得學習一種新的程式語言。 - **簡單易學**:這對於初學程式設計者尤其重要, 表示初期的學習門檻低, 否則就容易一學就想放棄。 - **支援功能齊全**:已經有世界各地的善心人士寫好各種延伸功能可以讓 Python 程式套用, 不用所有的事情都要自己從零做起, 成效高。 ## 牛刀小試 試用 Python 最簡單的方法, 就是在**交談模式**下把 Python 當成便利的計算機, 舉例來說, 如果你去逛書店, 在一櫃打 7 折的書中挑了 100 元與 200 元的書各一本, 另一櫃打 8 折的書中挑了 200 元與 300 元的書各一本, 若使用如下的傳統計算機: ![](https://i.imgur.com/ZIlgcQh.png =158x250) 就要先按 `100` `+` `200` `×` `0.7` 把第一櫃的書計算完畢後按 `M+` 記錄下來, 再按 `200` `+` `300` `×` `0.8` 算出第二櫃的書價後按 `+` `MR` 把剛剛記錄下來的第一櫃的書價加進來, 不但很麻煩, 也要自己記得計算過程, 還得弄清楚計算機上這些 `M+` `MR` `MC` 等等按鈕的功用。如果使用 Python, 只要一行**運算式**就可以了, 如下: ````Python >>> (100 + 200) * 0.7 + (200 + 300) * 0.8 610.0 ```` 除了鍵盤無法簡單打出 `×`, 因此 Python 使用 `*` 表示乘法以外, 就跟一般寫**數學算式**的方式一樣, 非常簡單。在交談模式下, Python 會把你鍵入的那一列運算式的計算結果顯示出來, 因此會看到 610.0。 :::info :memo: 在鍵入運算式時, 可以像是上例加入適當的空白區隔個別的運算, 不加空白也沒有關係, 都可以正確運算。 ::: ### 運算式 (expression) 你可以自己試看看不同的計算, Python 也提供了計算次方的功能, 像是 `10 的 2 次方`: ````Python >>> 10 ** 2 100 ```` 上例中 `**` 就是次方的意思。如果想取得除法的商數及餘數, 可以這樣: ````Python >>> 30 / 20 # 除法 1.5 >>> 30 % 20 # 取得除法的餘數 10 >>> 30 // 20 # 取得除法的商數 1 ```` 上面的示範有幾個基本知識需要說明: 1. `#` 字元代表註解 (comment), 從 `#` 開始到該列結尾的內容 Python 會當成沒看到, 完全沒作用。這些註解是寫給人看的, 說明程式碼的內容, 有助於理解程式碼。 2. 運算式中的 `+`、`*`、`/`、`//`、`%` 等稱為『**運算器(operator)**』, 代表各種計算方式。 3. 運算式中提供給運算器計算的資料稱為『**運算元 (operand)**』, 前面範例中出現的運算器都需要 2 個運算元, 例如 `*` 計算的是 2 個運算元相乘的結果。 瞭解之後, 就可以來看看 Python 中這些運算元 (資料) 的奇特之處。 ::: info :memo: 有些教材會將 operator 稱為『**運算子**』, 不過我認為『子』字實在很難理解是什麼意思?所以我採取『運算器』的說法, 表示是用來進行特定運算的機制。 ::: ::: info :warning: 如同數學運算有先乘除後加減等優先順序的規則, Python 中的運算器也有自己的一套優先順序規則, 不過為了避免出錯, 我強烈建議加上適當的小括號, 明確表明運算式中個別運算的先後順序, 也讓閱讀的人容易看懂。 ::: ::: info :memo: 如果想知道 Python 提供有哪些運算, 可以查看 [Python 線上文件](https://docs.python.org/3/library/stdtypes.html)。 :::