if 條件(選擇結構)

2019/07/15 謝碧景(c)編製更新

學習目標

一、Python程式碼縮排格式

(一)縮排格式

    • 如下左圖,Python程式碼以縮排(indent)方式表示一組相同的程式區塊,是以 : 冒號縮排格式顯示,建議使用4個空白鍵產生縮排。

    • 如下右圖,大部分程式語言如:C、C++、Java等,都以一對大括號 { } 框住程式區塊

Python 程式碼縮排格式

if (條件式) :

程式區塊

下一列程式碼敘述

C++、C、Java等程式碼格式

if (條件式) {

程式區塊(成立敘述區塊);

}

(二)請勿混用空白鍵和Tab鍵

  • 注意:4個空白鍵 Tab鍵 在不同編輯器讀取時,可能會有不同的效果。

  • 若使用 Spyder 或 Jupyter NoteBook 編輯器,會將Tab鍵自動轉換為4個空白鍵,以避免執行中產生警告或錯誤等問題。

二、單向選擇 (if...)

(一)語法

    • 當條件式為 True(真)時,就執行【縮排格式】的成立敘述『程式區塊』當條件式為 False(假)時,則跳開 成立敘述程式區塊,繼續往下執行

    • 成立敘述的程式區塊可為一列或多列,若僅一列敘述,可一列編撰『 if (條件式): 程式碼 』。
      例如下方條件判斷 if (sc>=60) : print("成績及格")

    • (條件式) 的括弧可省略,即『 if 條件式: 』亦可。

if (條件式):

程式區塊 #一列或多列敘述

下一列程式碼敘述

sc=eval(input("輸入成績:"))

if sc>=60:

print("成績及格")

print("程式結束")

執行2次結果:

*註:條件式可搭配 比較運算子 (==、!=、<、>、<=、>=) 或 邏輯運算子 (and、or、not) 使用。

(二)單向選擇流程圖

三、雙向選擇 (if...else)

(一)語法

  • 當條件式為 True(真)時,就執行成立敘述區塊,當條件式為 False(假)時,則執行不成立敘述區塊。

  • 敘述 區塊可為一列或多列

if (條件式) :

成立敘述程式區塊 #一列或多列

else :

不成立敘述程式區塊 #一列或多列

sc=int(input("輸入成績:"))

if(sc>=60):

print("及格")

else:

print("不及格")

執行2次結果:

*註:條件式可搭配 比較運算子 (==、!=、<、>、<=、>=) 或 邏輯運算子 (and、or、not) 使用。

(二)雙向選擇流程圖

四、多向選擇 (if...elif...else)

(一)語法

  • 在條件式之內可以包含條件式,稱為巢狀條件式。(以三個條件式為例)

if (條件式1):

程式區塊1 #一列或多列敘述

elif (條件式2):

程式區塊2 #一列或多列敘述

elif (條件式3):

程式區塊3 #一列或多列敘述

else:

else程式區塊 #一列或多列敘述

例1:輸入兩整數(非0),再輸入一個運算子+-*/,請輸出兩數運算結果。

例2:判斷等級。

*註:條件式可搭配 比較運算子 (==、!=、<、>、<=、>=) 或 邏輯運算子 (not'、and、or) 使用。

(二)多向選擇流程圖

§實作練習

一、輸入一正整數,判斷為奇數(odd)或偶數(even)。【流程圖:單向雙向

【提示:% 運算子→求餘數;方法1→單向選擇,方法2→雙向選擇(檔名:if-ex1.py)

執行1結果:

輸入一正整數,判斷此數為奇數或偶數。

請輸入此數:55

55為奇數

執行2結果:

輸入一正整數,判斷此數為奇數或偶數。

請輸入此數:56

56為偶數

二、輸入兩正整數,判斷此二數是否為一個奇數與一個偶數。【流程圖:雙向多向

【提示:and(且)、or(或)→邏輯運算子(檔名:if-ex2.py)

執行1結果:

判斷此二數是否為一個奇數與一個偶數。

請輸入此二數:55 56

55,56恰為一個奇數與一個偶數

執行2結果:

判斷此二數是否為一個奇數與一個偶數。

請輸入此二數:55 55

55,55不為一個奇數與一個偶數

三、三角形的三邊長一定滿足任兩邊邊長和大於第三邊。輸入三根木條,長度分別為a、b、c時,這三根木條能不能拼成一個三角形。(檔名:if-ex3.py)

【提示:如果 ...(條件1) 且 ...(條件2) 且 ...(條件3),則這三根木條能組成三角形。條件參閱:邏輯運算子】例:5 3 4(Yes)、3 5 3(Yes)、4 7 3(No)

四、 輸入一個整數,請判斷這個整數為三位數整數(請考慮100~999 與 -100~-999 兩種狀況)。

【提示:and(且)、or(或)】(檔名:if-ex4.py)

執行1結果:

判斷一個輸入的數字是否為三位數整數

請輸入此數字=315

315為三位數整數

執行3結果:

判斷一個輸入的數字是否為三位數整數

請輸入此數字=-325

-325為三位數整數

執行2結果:

判斷一個輸入的數字是否為三位數整數

請輸入此數字=55

55不為三位數整數

執行4結果:

判斷一個輸入的數字是否為三位數整數

請輸入此數字=-7

-7不為三位數整數

五、輸入身高及體重,求個人BMI值(輸出:請四捨五入至小數點下2位)?並判斷 BMI 標準與否?【流程圖

【提示1:BMI=體重/(身高*身高),身高以公尺(M)為單位,體重以公斤(KG)為單位 。】(檔名:if-ex5.py)

BMI<18.5 ,請輸出“體重過輕”。

18.5≦BMI≦23 ,請輸出“標準體重”。

23<BMI<25 ,請輸出“體重過重”。

BMI≧25 ,請輸出“肥胖家族”。

執行1結果:

計算BMI,並判斷BMI是否標準。

請輸入身高(M):1.75

請輸入體重(Kg):70

你的身高為175公分 體重為70公斤 BMI=22.86

標準體重

執行2結果:

計算BMI,並判斷BMI是否標準。

請輸入身高(M):1.8

請輸入體重(Kg):120

你的身高為180公分 體重為120公斤 BMI=37.04

肥胖家族

六、學校上課時間為 7:30 到 17:00 (24小時制)。輸入某時間,請判斷是上學時間(請輸出「At School」)或放學時間(請輸出「Off School」)。(檔名:if-ex6.py) 【摘自:d066:上學去吧!ZeroJudge