開啟「互動式 Python 執行列
Python中的判斷式
 課程目錄
 編輯章節
 EDU-MD
 Google 教室
 加至書籤

判斷式

程式,是一種充滿了邏輯的東西 — 如果 A 事件發生了,則要執行 B 工作。這種「如果… 則… 」的運算稱為 判斷式,英文稱作 conditional statement。在 Python 中,這種判斷相當的簡單,短短的一行,就可以完成很複雜的判斷。接下來,讓我們來探索 Python 的判斷式吧!

if

在程式中,有時候我們會希望一部分的程式只在某些情況下運行;反之,有時候我們會希望一部分的程式在某些情況下不要運行。要怎麼達成這個工作呢?Python 和絕大多數的程式語言一樣,使用所謂的 if else判斷式來達成這類型的任務。

現在假設我們建立一個變數叫做 a,並且將其值設為 3:

a = 3

接著,我們想要判斷 a 這個變數是否為正數,如果是正數,就 print 出「變數是正數」,若為負數,則 print 出「變數是負數」。這樣的任務,要如何達成呢?「if」就在此有了作用了。

我們先來想想,當 a > 0 時,我們可以知道 a 是一個正數;當 a < 0 時,我們可以知道 a 是一個負數。若要用 Python 表達這樣的邏輯,我們可以寫:

if a > 0:
    print("變數是正數")
if a < 0:
    print("變數是負數")

因為在程式的一開始,我們就告訴了電腦「a = 3」這件事。在我們執行這段程式時,可以發現螢幕上印出了「變數是正數」這段字。

再觀察一下這段程式,我們可以發現第二行與第四行的開始時都各自空了四格,這是為什麼呢?這樣的空格,在程式中稱為縮排(indentation)。因為第二行與第四行的程式是屬於前一行中 if 冒號後的程式,空了四格才能讓電腦判斷,哪些程式是屬於哪裡的。

這樣你對於 if 判斷式有感覺了嗎?讓我們來看看下列這個例子,加強一下對於 if 判斷式的認知:

if True:
    print("True!")
if False:
    print("False!")

讓我們猜猜執行這段程式後,螢幕上會印出什麼東西呢?答案就是,會印出「True!」。在這裡,你可能會好奇,第四行中的「False!」為什麼沒有印出來呢?這是因為 if 判斷式後的程式只有在 if True 的情況下會執行

讓我們回到剛剛正負數的那個例子:

a = 3
if a > 0:
    print("變數是正數")
if a < 0:
    print("變數是負數")

其實我們可以把它看成:

a = 3 
if True: 
    print("變數是正數") 
if False: 
    print("變數是負數")  

elif

讓我們繼續使用剛剛 a = 3 的這個例子:

a = 3 
if a > 0: 
    print("變數是正數") 
if a < 0: 
    print("變數是負數")  

電腦在執行這段程式時,會逐行逐行地執行:電腦在第二行時判斷了一次「a 是否大於 0」,發現是之後,執行了第三行的 print() 函數;接著電腦又再第三行判斷了一次「a 是否小於 0」,發現不是,因此沒有執行第五行的程式。

這樣看起來其實蠻合理的,但是如果想想,既然第二行已經確定了 a > 0 了,那為什麼在第四行時又要判斷一次「a 是否小於 0」呢?因此,有一個更好的寫法,我們可以將程式改成:

a = 3 
if a > 0: 
    print("變數是正數") 
elif a < 0: 
    print("變數是負數")  

我們將第四行的 if 改成了 elif,這麼一來,當第二行的 if 判斷通過了,第四行的判斷就不會再執行一次了。其實,elif 是 else if 的縮寫,在程式中我們常常看到這種結構的判斷式:

if A :
    doThis()
elif B :
    doThat()

我們可以將之解讀為:

如果 A 是 True :
    doThis()
如果 A 不是 True,
但是 B 是 Ture:
    doThat()

else

繼續剛剛 a = 3 的例子,但是現在我們不要印出 a 是正數或負數,而是改成印出 a 是否大於 3。我們可以寫:

a = 3
if a > 3:
    print("a大於3")
elif not a > 3:
    print("a不大於3")

這樣看起來已經相當地簡潔有力了,但是讓我們再思考一下:如果第二行的「a 是否大於 3」是 False,那在第四行為什麼還要再比較一次「a 是否不大於 3」呢?這種時候,else 這個字就可以發會作用了:

a = 3
if a > 3:
    print("a大於3")
else:
    print("a不大於3")

這樣是不是更加簡潔了呢?程式這樣跑起來,也會更有效率。讓我們用下列這張圖來看看這段程式是怎麼運作的吧!

if-elif-else 結構

現在,我們要運用剛剛學過的 if-elif-else 來製作一個簡單的程式。我們的目標是建立一個變數,讓使用者輸入今天星期幾,接著使用判斷式來給予使用者相對應的問候。

譬如說,當使用者輸入「Monday」,我們就要說「新的星期,加油!」;當使用者輸入「Friday」,我們就要說「再撐一天就好了!」那麼首先,我們先將使用者輸入的程式寫好:

day = input("今天星期幾呢?")

接著,我們來寫判斷式的部分,請銘記在心**「if-elif-else」這樣的程式結構**:

if day == "Monday":
    print("新的星期,加油!")
  

elif day == "Tuesday": 
    print("這禮拜你將完成很多事情!")
  

elif day == "Wednesday": 
    print("第三天,好好發揮工作精神!")  

  

elif day == "Thursday": 
    print("你已經撐過一半了!")
  

elif day == "Friday":
    print("再撐一天就好了!") 
  

elif day == "Saturday":
    print("假期愉快 ^.^")  

  

elif day == "Sunday":
    print("把握假期的最後一天!")  

  

else:
    print("你是不是輸入錯誤了呢?")  

  

這樣我們就完成我們的程式嘍!趕快用CMD 執行一下,看看自己學習判斷式的成果吧!

 均一平台
 台達磨課師
 酷課雲
 可汗學院
無相關資源
 收起側邊目錄
 
前往目錄頁面