Python 入門指南 5.0
單元 1 - 認識 Python 語言
使用 Python 語言寫程式,最簡單的方式就是開啟文字編輯器 (text editor) ,然後將原始程式碼 (source code) 逐字元 (character) 一個一個打進文字編輯器中,然後依純文字檔案的編碼儲存檔案 (file) , Python 程式的原始碼檔案採用 .py 的副檔名
以下是用 Mac 系統的「文字編輯」輸入第一個範例 demo.py
也可以利用具有語法高亮度顯示的文字編輯器,或是整合開發環境 (Integrated Development Environment, IDE) ,如下圖為 Mac 系統的 Xcode
大多數專門寫程式的文字編輯器都支援 Python 的語法高亮度,至於整合開發環境可參考官網提供的比較。
或是參考本書的語法高亮度顯示,此範例程式 demo.py 如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | o = object()
# 於命令列印出訊息
print()
print(o)
print(".. 以上是 object 型態物件的字串形式")
print()
print("程式結束 ....")
print()
# 檔名: demo.py
# 說明:《Python入門指南》的範例程式
# 網站: http://kaiching.org
# 作者: 張凱慶
# 時間: 2023 年 5 月
|
本書採用開放原始碼的 Pygments 專案刻語法高亮度為 Xcode 風格,再做調整符合本書需求, Pygments 專案的官網為 https://pygments.org/ 。
先看到草綠色標記的幾個字
1 5 | o = object()
print(o)
|
兩個都是 Python 的內建函數 (function) 之一, object() 回傳最基本的 object 物件 (object) , print() 則用來將參數 (parameter) 字串 (string) 顯示在命令列上,舊版的 Python 直譯器 (interpreter) 把 print 當關鍵字 (keyword) 使用,所謂的關鍵字是語法功能的保留字 (reserved word) ,具有既定特殊的用法。
這裡講的 Python 舊版為 2.x ,我們使用的是 3.11 以後的 Python 版本。
至於函數也是具有既定功能的用法,這裡的 print() 就是將字串印在命令列上。其實就功能而言,列印的動作用關鍵字或函數並沒有太大的分別,若就 Python 設計的哲學來講,關鍵字的數量應該盡可能精簡,並且以語法意義為主,因此這樣的輸出工作交給函數會比較適當。
本書用紫紅色標記關鍵字,例如
| None if for return try
|
簡單的程式例如 demo.py 並沒有用到關鍵字,關鍵字除了常數外大都跟邏輯判斷有關,例如上面的 if 便是用於選擇結構。
另外井字號開頭的幾行
3 11 12 13 14 15 | # 於命令列印出訊息
# 檔名: demo.py
# 說明:《Python入門指南》的範例程式
# 網站: http://kaiching.org
# 作者: 張凱慶
# 時間: 2023 年 5 月
|
井字號開頭則是 Python 單行註解 (comment) 的方式,屬於 Perl 風格的註解樣式。所謂的註解就是在程式中輔助說明的文字,凡是註解文字都不屬於會被程式執行的部份,因此可用自然語言替程式說明,無須恪守 Python 的語法規則。
雙引號圍起來的內容則是藍色
6 8 | print(".. 以上是 object 型態物件的字串形式")
print("程式結束 ...."
|
這是字串字面常數 (literal) ,所謂的字串就是文字資料,其為雙引號或單引號圍起來內容,可以是任何輸入字元或文字。
其他識別字 (identifier) 或運算子 (operator) 都採黑色
| a b o sum + = < >
|
這個範例很簡單,印出一些訊息到命令列。我們逐行來看看 demo.py 進行的工作,首先,第 1 行為建立 object 型態的物件 o
1 | o = object()
|
由於 Python 是物件導向程式語言 (object-oriented programming language) ,某種程度來說使用 Python 寫程式就是使用物件跟設計物件,好加在 Python 已經內建一個內如豐富的程式庫 (library) ,很多時候我們都只需要直接利用程式庫中的物件即可。
object 為 Python 中最基本的物件,其實 Python 中所有東西都是物件,藉由內建函數 object() ,變數 (variable) o 就會得到 object 型態 (type) 的物件。這裡的等號 = 是指派運算子 (assignment operator) ,用來將等號右邊的值 (value) 傳遞給等號左邊的變數。
下面連續呼叫 6 次 print()
3 4 5 6 7 8 9 | # 於命令列印出訊息
print()
print(o)
print(".. 以上是 object 型態物件的字串形式")
print()
print("程式結束 ....")
print()
|
若沒有提供參數給 print() ,預設印出 "\n" ,這是新行字元,表示到這裡就斷行的意思。這裡
5 | print(o)
|
以 o 當參數,就會印出物件 o 的字串形式。
字串也是物件,底下雙引號圍起來的字元就是字串的常數形式
6 | print(".. 以上是 object 型態物件的字串形式")
|
因此這個程式會先印出一個空白行,然後 o 的字串形式,然後字串訊息,然後空白行,然後另一個字串訊息,最後也是個空白行。
程式很簡單,接下來,我們繼續來看看如何執行囉!
中英文術語對照 | |
---|---|
整合開發環境 | Integrated Development Environment, IDE |
指派運算子 | assignment operator |
字元 | character |
註解 | comment |
檔案 | file |
函數 | function |
識別字 | identifier |
直譯器 | interpreter |
關鍵字 | keyword |
程式庫 | library |
字面常數 | literal |
物件 | object |
物件導向程式語言 | object-oriented programming language |
運算子 | operator |
參數 | parameter |
保留字 | reserved word |
原始程式碼 | source code |
字串 | string |
文字編輯器 | text editor |
型態 | type |
變數 | variable |
值 | value |
重點整理 |
---|
1. 寫程式可以用文字編輯器或整合開發環境。 |
2. Python 有大量可以直接運用的內建函數、內建物件等等,也具備豐富的程式庫。 |
3. Python 用井字號 # 替程式註解,註解是程式碼說明的部份,不會被直譯器所執行。 |
4. 字串字面常數為雙引號或單引號圍起來的內容。 |
5. Python 是物件導向程式設計的程式語言,裡頭所有的東西都是物件。 |
6. 指派運算子為單一個等號 = ,用來將等號右邊的值傳遞給左邊的變數。 |
問題與討論 |
---|
1. 可以用 Word 寫程式嗎?有什麼不方便的地方呢? |
2. 程式語言除了直譯式的 Python 外,還有編譯式的程式語言,這種程式語言在執行前需要先將原始程式碼編譯成執行檔,請將直譯式與編譯式的程式語言各舉五種出來。 |
3. 識別字就是變數嗎?兩者有什麼不同呢? |
4. 想想看應該替程式碼提供哪些註解?什麼地方需要?什麼地方又不需要? |
5. 物件導向程式語言除了 Python 還有其他的嗎? C 語言是嗎? Java 是嗎? Fortran 呢? |
6. 物件是程式設計的中文術語,英文原文為 object ,其實 object 就是一般中文「東西」的意思,想一想平常我們是怎麼運用「東西」的,「東西」的概念如何移植到程式設計的物件中? |
練習 |
---|
1. 將上述範例的內容逐字元打到文字編輯器裡,然後將檔名存成 demo.py 。 |
2. 承上題,刪除 demo.py 中所有單行註解,並將檔名存成 exercuse0101.py 。 參考程式碼 |
3. 承上題,刪除 o = object() 及 o = object() 兩行程式碼,並將檔名存成 exercuse0102.py 。 參考程式碼 |
4. 承上題,將第一個印出字串改成 "There is no spoon." ,第二個印出字串改成 "Free your mind." ,並將檔名存成 exercuse0103.py 。 參考程式碼 |
5. 承上題,自行設定兩個印出字串內容,並將檔名存成 exercuse0104.py 。 參考程式碼 |
6. 承上題,內建函數 input() 可以在命令列接收使用者輸入,回傳為字串,將兩個印出字串改成使用者輸入的 s1 與 s2 ,並將檔名存成 exercuse0105.py 。 參考程式碼 |
7. 承上題, input() 的小括弧中可以放一個字串參數,這個字串參數是使用者輸入前的提示文字,將兩個 input() 加入字串參數,並在 print() 中加入顯示是哪一個輸入字串,並將檔名存成 exercuse0106.py 。 參考程式碼 |
8. 承上題,重新替程式加入適當註解,並將檔名存成 exercuse0107.py 。 參考程式碼 |
9. 承上題, print() 函數可以增加 end 參數, end 用來設定印出結尾符號,預設是斷行字元 '\n' ,這裡改成自訂的字串,例如 ", " ,並將檔名存成 exercuse0108.py 。 參考程式碼 |
10. 承上題, print() 函數可以用逗號增加印出字串,另外可以用 sep 參數設定印出字串的間隔符號,這裡將 s1 跟 s2 放在同一個 print() 印出,然後利用 sep 設定間隔字串,例如 ", " ,並將檔名存成 exercuse0109.py 。 參考程式碼 |