尚未建立名稱
能量:0
我的帳號中心
問 學Bot 任何問題!
首頁&搜尋
最愛&收藏
所有課程
分享資源
帳號設定
關於學呀
線上募款
章節設定
章節名稱
章節類別
章節標籤
或者建立新標籤
章節內容
全螢幕編輯與預覽
# 判斷式 ![](https://i1.wp.com/blogs.cfainstitute.org/investor/files/2019/07/Emotions-and-Decision-Making-Five-Steps-to-Improve-Your-Process.jpg?fit=1200%2C628&;ssl=1) 程式,是一種充滿了邏輯的東西 — 如果 A 事件發生了,則要執行 B 工作。這種「如果… 則… 」的運算稱為 **[判斷式](view/410e99fedf?subj=programming)**,英文稱作 **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 冒號後的程式**,空了四格才能讓電腦判斷,哪些程式是屬於哪裡的。 ![](https://www.zetria.org/content_img/6qkjg9pw4.jpg) 這樣你對於 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") ``` 這樣是不是更加簡潔了呢?程式這樣跑起來,也會更有效率。讓我們用下列這張圖來看看這段程式是怎麼運作的吧! ![](https://www.zetria.org/content_img/tokm913vx.jpg) ## 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** 執行一下,看看自己學習判斷式的成果吧!
儲存章節
前往實際頁面