開始跟 Python 培養感情之前,首先我們必須先稍微瞭解一下它。當我們說「Python」時,其實可能代表一個「語言」,或者一個「使用 Python 這個語言的平台」。
這是什麼意思?嗯,想想你的手機好了。現在的智慧型手機都有語音助理軟體,例如 iPhone 有 Siri,Android 也有 Google Now。Python 也是類似這樣的東西。
┌─────────┐ │ 請多指教 │ └─v───────┘ (・∀・)つ Python
當我們想讓 Python 做事情時,就必須向它下指令。Python 不像 Siri、Google Now 等等使用我們平常講的語言,而是使用特殊的語法。這個特別的語法也叫做 Python——它就是我們將要學習的程式語言。
Python Shell
我們通常會使用終端機來和 Python 溝通。方法有兩種:
1. 我們可以一次要求 Python 執行一個指令。這和 Siri 與 Google Now 有點像:我們要求 Python 做一件事情,然後 Python 就會告訴我們這件事情的結果(或者也可以叫他做就對了,不要回答)。我們通常把這種作法叫做「互動模式」。
2. 如果我們很清楚想讓 Python 做什麼事,就可以把所有想做的事情寫在一個檔案裡面,然後告訴 Python 去做那個檔案裡寫的事情。這樣我們就不需要一直盯著電腦,讓 Python 一個口令一個動作,只要把想做的事情寫下來,其他就一切交給 Python。
我們在做網站時,通常會用方法 2——我們總不能一直盯著電腦,等著別人連上我們的網站,再告訴 Python 該怎麼辦吧!但是在這篇文章裡面,我們會使用方法 1 練習語法。別擔心,我們在最後面還是會用用看方法 2,感受一下它們之間的差異。
進入互動模式的方法,是打開終端機,輸入下面的指令:
python
按下 Enter 鍵後,應該會看到類似下面的內容
Python 3.4.1 (...)
Type "copyright", "credits" or "license" for more information.
>>>
這代表 Python 已經啟動,進入了 Python shell。當我們要使用互動模式時,都必須在這個 Python shell 中進行。最後一行的 >>> 代表它已經準備接受你的下一個命令。
在任何時候,只要你看到 >>> 符號,就可以輸入 exit() 並按 Enter,以退出 Python shell,回到原本的提示列。接著只要再輸入
python
就會重新回到 Python shell。不過要注意,Python 不會自動幫你記住之前的資料,所以如果你退出 Python shell,之前輸入過的東西就全部會消失,必須重新輸入!(我們之後會教你怎麼把資料存到不會消失的地方。)
第一個 Python 指令
我們來讓 Python 執行幾個指令看看。試著輸入 2 + 3,然後按 Enter。你會看到下面的結果:
這就是 Python 互動模式的標準流程。你問 Python 一個問題,然後它回答你。
┌───┐ ┌───────┐ │ 5 │ │ 2 + 3 │ └─v─┘ └──────v┘ (・∀・) 你 Python
Python 畢竟是電腦程式,這種計算當然難不倒它。試試看一些更複雜的計算吧!下面是幾個例子:
·
- 4 * 5
- 40 / (7 - 3) * 2
- 2 ** 3
麼意思?多試幾個數字,看看你能不能自己找到答案。
解答:Python 除了加減乘除外,還懂得一些比較不常見的計算符號。例如 ** 代表「次方」,所以 2 ** 3 就是「2 的 3 次方」,也就是 2 * 2 * 2 = 8。
字串(Strings)
除了數字之外,Python 也可以處理文字,試著輸入你的名字:
>>> 'I am a Django Girl' 'I am a Django Girl'
我們把這樣的一段文字叫做「字串」。在 Python 中,字串必須用單引號(')或是雙引號(")包起來。因為按 Enter 在 Python 中代表「執行這個指令」,所以字串中不能用 Enter。
思考一下:如果我們想在字串裡換行,又該怎麼辦?Python 提供了兩種方法。第一種叫做「跳脫字元」,Python 在遇到某些特定的字元組合時,會把它辨認成其他的意思,例如「換行」就可以寫成 \n(注意斜線的方向,不要寫成 /n)。另一種方法是使用「多行字串」,用三個單或雙引號把字串包起來。不過這些就是比較進階的語法,詳細可以參考官方文件對字串的說明。
我們可以用 + 把兩個字串連在一起。試試看:
>>> 'Hello ' + 'Django' 'Hello Django'
也可以用乘號(*)來重複一個字串:
>>> 'Django ' * 3 'Django Django Django '
或者更厲害的:
>>> 'One little, two little,' + ' little Indians' * 3 + '.' 'One little, two little, little Indians little Indians little Indians.'
你也可以問 Python 字串中有幾個字:
>>> len('I am a Django Girl') 18
噢,等等,這是什麼?上面這段程式,其實就等於問 Python「'I am a Django Girl' 的長度(length,簡寫 len)是多少」。我們在使用 Python 時,有很多常常想問它的問題。為了方便我們使用,Python 為這些問題建立了一些捷徑,叫做「函式」。當我們使用函式時,會使用這樣的語法:
在這裡,我們想問的事情是長度(len),受詞是 'I am a Django Girl',所以就寫成
len('I am a Django Girl')
Python 內建了很多很多的函式可以讓我們使用。我們在後面會慢慢介紹。
錯誤處理
既然 len 是用來詢問長度,那麼能不能告訴我們數字有幾位數?
>>> len(304023) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: object of type 'int' has no len()
好像沒有得到答案,而且 Python 還給了我們一些沒看過的訊息。
恭喜你看到了第一個 Python 錯誤!這個錯誤告訴我們(最後一行冒號 : 後面的內容)整數(integer,簡寫 int)沒有長度。Python 不知道該怎麼回答,只好告訴我們錯誤訊息,請我們修改問題。
思考一下:可是 304023 不是很明顯六位數嗎,為什麼 Python 不懂?回想以前的數學課(啊啊啊啊我知道這回憶不太愉快,對不起),數字有「進位」的概念,例如「十進位」的 5 和「二進位」的 101 其實是同樣的數值,但寫出來會不一樣。Python 不能亂假設你想用哪一種進位法,所以就放棄了。
好吧,那怎麼辦?把數字轉換成字串就沒問題了!
我們在 len 函式當中,使用了 str 函式,str() 可以把東西轉換成字串;這下 len 函式就知道該怎麼做了。
- str 函式把東西轉成字串。
- int 函式把東西轉成整數。
小提醒:我們可以把任何數字轉成文字,但不是所有文字都能轉成數字。想想看,如果我們輸入 int('hello'),會發生什麼事?實際試試看,驗證你的猜測對不對。
參考資料來源 https://djangogirlstaipei.herokuapp.com/tutorials/python/?os=windows