Python 程式設計

第 2 章    執行 Python 程式

(1) 建立目錄架構

∗ 本教材目錄架構:

▸ 範例程式擬依照章節儲存位置,目錄架構如下:

<...>/
   python/
      ch2/
         ...
      ch3/
         ...
      ...
✶ 以上 <...> 指的是 python 目錄的上層目錄,由使用者決定

▸ 利用檔案管理程式建立 pythonpython/ch2 兩個目錄

(2) 安裝 Python 3

∗ Ubuntu:預設已安裝

∗ Windows

▸ 至 https://www.python.org/downloads/windows/ 下載 python-3.x.x-amd64.exe 並儲存檔案

▸ 進行安裝:雙擊該檔案並點選「執行」,然後勾選「Install launcher ...」與「Add Python 3.x to PATH」並點擊「Install Now」開始安裝

∗ Mac OS

▸ 至 Python 官網 下載安裝檔 (python-3.x.x-macosxy.y.pkg),儲存檔案並安裝

以上 3.x.x 中的 x 為 Python 版本數字, macosxy.y 中的 y 為 Mac OS 版本數字

(3) 三種方式執行 Python 程式

(a) 在終端機使用 Python shell 執行

適合測試簡單少量的程式指令

▸ Ubuntu:開啟終端機程式並輸入 python3 指令

▸ Windows:開啟「命令提示字元」程式並輸入 python 指令:

▸ Mac:在終端機輸入 python3 進入 Python3 shell:

Python 3.x.x (...)
...
Type "help", "copyright", "credits" or "license" for more information.
>>> print('Hello world')
Hello world
>>>
>>> 是 Python shell 的提示符號,不需輸入
✶ 輸入 print('Hello world') 指令後,Python 直譯器就會執行指令然後顯示結果 Hello world
# print() 是 Python 的函式,用來列印資料到螢幕
# 'Hello world':Python 字串是由單引號或雙引號所包住的一連串字元
# Python 指令結束不需分號 (這與其他程式語言很不一樣)

▸ 離開 Python shell:

>>> exit()

(b) 利用一般文字編輯器撰寫程式檔,然後執行

適合撰寫大量的程式指令,儲存成程式檔案後再一次執行

▸ 將一群程式指令寫入一個檔案來執行,這些程式稱為「原始程式碼」(Source code)

▸ Python 的程式檔稱為模組 (Module),副檔名為 .py

▸ 利用文字編輯器開啟新檔案

✶ Ubuntu:gedit
✶ Windows:記事本或安裝 Notepad++
✶ Mac:文字編輯 → 新增文件 → (上方) 格式 → 製作純文字格式
輸入以下內容:
print('Hello world')
✶ 將檔案儲存 (可按 ctrl-s) 在 /python/ch2 目錄下,檔名為 hello.py

▸ 執行此模組:

✶ Ubuntu:
$ cd <...>/python/ch2
$ python3 hello.py
Hello world
✶ Windows:
C:\...> cd <...>/python/ch2
C:\...> python hello.py
Hello world
✶ Mac:
$ cd <...>/python/ch2
$ python3 hello.py
Hello world

(c) 利用 IDE (Integrated Development Environment,整合式開發環境) 編輯及執行程式

提供許多程式開發的輔助功能,使開發過程更為輕鬆且快速

▸ 常用 IDE:Atom, Eclipse+PyDev, IPython, PyCharm, Pyzo 等,本教材使用 Pyzo

▸ 安裝 Pyzo:

✶ Ubuntu:
# 安裝相關套件與 Pyzo:
$ sudo apt install python3-pip python3-pyqt5
$ sudo python3 -m pip install pyzo --upgrade
# 新增 Pyzo 程式圖示:
$ sudo gedit /usr/share/applications/pyzo.desktop
[Desktop Entry]
Name=Pyzo
Type=Application
Exec=/usr/local/bin/pyzo
Terminal=false
Icon=/usr/local/lib/python3.x/dist-packages/pyzo/resources/appicons/pyzologo32.png
Comment=Integrated Development Environment
NoDisplay=false
Categories=Development;IDE;
Name[en]=Pyzo
# 安裝圖示
$ sudo desktop-file-install /usr/share/applications/pyzo.desktop
✶ Windows:下載安裝檔並安裝
# http://pyzo.org Quickstart Pyzo for Windows
✶ Mac:至 http://pyzo.org Quickstart Pyzo for OS X 下載安裝檔 (pyzo-x.x.x-osx64.dmg) 並安裝,安裝時可能需要至「系統偏好設定」 「安全性與隱私權」裡開放安裝權限,最後將執行檔複製到「應用程式」

▸ 啟動 Pyzo 應用程式,並做以下設定

✶ 直譯器:Shell Edit shell configurations 選擇 exe:
# Ubuntu: /usr/bin/python3.x [v3.x.x]
# Windows: C:\users\<...>\appdata\local\programs\python\python3x-64\python.exe [v3.x.x]
# Mac: /Library/Frameworks/Python.framework/Versions/3.x/bin/python3.x [v3.x.x]
Done
✶ 設定執行快速鍵為 ctrl-enter:Settings (設定) Edit key mappings (編輯鍵盤對應)... (Top tab) Run (執行頁籤) "Run file as script" (以腳本模式執行檔案) (點選) "Shortcut 1" 欄位資料 (按下) ctrl-enter Apply
# 「以腳本模式執行檔案」:每次按下 ctrl-enter 按鍵時,重新啟動 Python shell,並執行程式
Pyzo 其他偏好設定

▸ 執行程式

✶ (選單列) 檔案 開啟 選擇先前的 hello.py 檔案
✶ 按 ctrl-enter 執行程式,即可在 Shell 區看到執行結果
Python 3.x.x ...
...
...
Running script: "...hello.py"
Hello world

(4) 程式的特性

∗ 程式的基本要素

▸ 輸入 (Input):從鍵盤、檔案、或其他裝置取得資料

▸ 輸出 (Output):從螢幕、檔案、或其他裝置顯示或傳送資料

▸ 數學 (Math):數學運算,例如加減乘除

▸ 邏輯 (Logic):邏輯運算,例如且 (and)、或 (or)、否 (not)

▸ 條件 (Condition):檢查某個條件是否成立,然後決定執行那一部份程式

▸ 重複 (Repetition):重複執行某些指令

∗ 除錯 (Debug)

▸ 撰寫程式是一個複雜的過程,經常會發生錯誤,程式錯誤稱為「蟲」(Bug)

✶ 電腦歷史上的第一隻蟲

▸ 仔細檢視或測試來將錯誤更正就叫做「除錯」(除蟲,Debug)

▸ 程式常見的三種錯誤:

✶ 語法錯誤 (Syntax error):程式語句或架構違反程式語言的規範
# 例如:打錯字、括號錯誤
✶ 執行時錯誤 (Runtime error):程式執行時才會發生的錯誤
# 例如:應輸入數字但使用者卻輸入了文字,數值除以 0
✶ 語意錯誤 (Semantic error):程式可以正常執行,但結果並非原先設計所要的結果
# 例如:產品售價應打 9 折但程式寫成 8 折,程式不會出錯,但結果不符合預期

(5) 陳述與表示式

∗ 陳述 (Statement):一個運算指令

例如:

▸ 指派陳述 (Assignment statement)

numStudents = 50

▸ 條件陳述 (Conditional statement)

if numStudents > 70:
    print('學生人數太多')

▸ 迴圈陳述 (Iteration statement)

for student in students:
    print(student)

▸ 呼叫函式陳述 (Function call statement)

print()

習慣上,Python 程式一行就是一個陳述,這樣看起來較為整齊 (註:可利用分號分隔,將多個陳述放在一行)

∗ 表示式 (Expression):由值、變數、運算子、或呼叫函式組合在一起的運算

▸ 例如:

x = 20 + 30
y = x - 15.6
print(x + round(y))
以上等號右邊算式及 print() 函式的參數都是表示式

▸ 計算 (Evaluate) 一個表示式會產生結果值,上述三個表示式的結果:

x: 50
y: 34.4
x + round(y): 84

(6) 輸出指令

∗ print() 是 Python 內建函式,有以下三種語法

print(<expr>, <expr>, ...)          # 可以包含許多表示式
print(f'{<expr>}, {<expr>}, ... ')  # 格式化字串 (Formatted string):在字串前面加上 f,表示式以大括號包住
print()   # 印一空行

<expr>:表示式

▸ 每次執行 print() 就是獨立列印一行,而且會自動在各表示式之間加上空格,例如:

print(3+4)
print(3, 4, 3+4)
print()
print('答案是', 3+4)
print(f'答案是 {5+6}')
會產生以下結果:
7
3 4 7

答案是 7
答案是 11

∗ 斷行與不斷行列印

▸ 斷行:在字串中加入 \n (New line) 符號,即可在列印時斷行

✶ 列印時 Python 會將 \n 視為一個字元,數值為 10,而非 \n 兩個字元,例如:
print('Hello\nworld')
Hello
world

▸ 不斷行:在 print() 函式加上 end='' 參數即可不斷行列印, 例如兩個列印指令印出單行:

print('Good morning, ', end='')
print('Mr. Smith.')
Good morning, Mr. Smith.

∗ 定位列印

▸ 在字串中加入 \t (Tab) 符號,即可在列印時依定位鍵位置排列,例如:

print('Hello\tworld')
print('Hello\tagain')
Hello    world
Hello    again

(7) 註解

∗ 註解 (Comment):補充說明程式意義的文字

▸ 當程式越來越大、越來越複雜時,就很難令人了解,這時候就需要寫一些資料來說明

▸ 註解:利用文字來解釋程式的意義, 讓讀者了解;註解只給人看,程式不會執行

▸ Python 註解的格式:

✶ 單行註解:以 # 符號開頭,一直到行末都屬於註解,例如以下藍色部份為程式指令,紅色部份為註解:
math = 80
eng = 86
avg = math*0.6 +  eng*0.4   # 平均分數:數學與英文之權重分別為 60% 與 40%
print(avg)
✶ 大量說明內容可在每行開頭使用單行註解,例如:
#--------------------------------------
# 本程式說明 Python 強大的功能!
# 作者:張三
# 最後修改日期:2018-8-1
# 版權聲明:任何人都可以複製並修改本程式
#--------------------------------------
✶ 多行註解:以三個引號所包含的文字,上述範例亦可如下寫成一個長字串:
'''
-----------------------------------------
本程式顯示 Python 強大的功能!
作者:張三
最後修改日期:2018-8-1
版權聲明:任何人都可以複製並修改本程式
-----------------------------------------
'''
Pyzo 快速鍵

註:亦可透過「設定」 「編輯鍵盤對應」 來設定各式快速鍵

▸ 檔案

ctrl-n:開新檔案
ctrl-s:存檔

▸ 縮排

Tab:縮排
Shift-Tab:取消縮排

▸ 文字選取

shift-Right:向右移動一格選取
shift-Left:向左移動一格選取
ctrl-a:全選

▸ 文字編輯

ctrl-c:複製
ctrl-x:剪下
ctrl-v:貼上
ctrl-z:復原
ctrl-d:刪除目前行

▸ 尋找與取代

ctrl-f:尋找
ctrl-g:尋找下一個

▸ 註解

ctrl-r:註解 (一般使用:ctrl-/)
ctrl-t:取消註解