本站電子書

您可以在這些電子書店找到本站電子書: Google Play 圖書iBooks StoreHyReadReadmooPubu
===>>>本站推出學習遊戲意見調查<<<===《如何自學程式設計》入選 Google Play 台灣地區2016年度最佳書籍

Python 3.1 快速導覽 - 選擇結構

Python 中最簡單的選擇結構 (selection structure) 為單一個 if 陳述 (if statement) ,在關鍵字 (keyword) if 後到冒號間的運算式 (expression) 即為條件 (condition) 。形式如下

if condition:


若運算式的結果為 True , 也就是條件為真,其後縮排 (indentation) 的程式區塊 (block) 便會執行,而若運算式的結果為 False ,這樣一來條件就為假,程式會跳過縮排的程式區塊,沒有縮排的第一個陳述 (statement) 執行。


以下程式示範使用單一的 if 陳述
a = "h"
b = "h"

if a == b:
    print("Welcome to my world!")

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:cf03.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月 


執行結果如下



程式的第 4 行
if a == b:


由於 a 及 b 兩個變數 (variable) 連到相同的物件 (object) ,所以條件為真, if 陳述後頭縮排的陳述便會執行。


if 可以跟關鍵字 else 連用,這樣一來, if 的條件為假時,程式跳過 if 陳述後頭縮排的程式碼,而去找 else 後頭縮排的程式碼來執行。


以下程式示範 if-else 陳述的使用
a = "h"
b = "k"

if a == b:
    print("Welcome to my world!")
else:
    print("How do you do?")

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:cf04.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月 


執行結果如下



此例中,由於第 4 行
if a == b:


由於變數 a 不等於變數 b ,所以程式會跳到執行第 6 行去執行 else 的部份
else:
    print("How do you do?")


if-else 也可以是巢狀 (nested) 的使用,例如
a = "h"
b = "k"

if a == "a":
    print("Yes!")
else:
    if a == b:
        print("No!")
    else:
        print("What?")

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:cf05.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月


執行結果如下



所謂巢狀的 if-else 陳述就是形如第 4 到 10 行的地方
if a == "a":
    print("Yes!")
else:
    if a == b:
        print("No!")
    else:
        print("What?")


這種形式其實是多重選擇, Python 利用另一個關鍵字 elif 使多重選擇的寫法較為簡單,如下例
a = "h"
b = "k"

if a == "a":
    print("Yes!")
elif a == b:
    print("No!")
else:
    print("What?")

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:cf06.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月


執行結果如下



if-elif-else 陳述中, else 可有可無,若加入 else 陳述, else 就會是以上皆非的預設選項。


中英文術語對照
選擇結構selection structure
if 陳述if statement
關鍵字keyword
運算式expression
條件condition
縮排indentation
區塊block
陳述statement
變數variable
物件object






沒有留言: