[Py 百日馬 Day 3] 用 if / elif / else 見機行事


Posted by Laihan on 2022-01-21

現實生活往往都是複雜的,會針對不同情況做出不同反應,在 Python 中我們可以使用 ifelseelif 來因應不同的情況。

if 敘述

如果 (if) 某條件成立 (condition = True),就做某件事 (statement),不沒成立就不做事,寫法如

if condition:
    statement

來舉個例子:當分數超過六十分就印出 "恭喜及格"

if score >= 60:
    print('恭喜及格!')

這裡要特別注意縮排,Python 是用縮排來區分程式區塊,若縮排錯誤會得到 IndentationError。縮排通常為四個空白鍵或一個 Tab 鍵,一般來說四個空白鍵 = 一個 Tab 鍵,但並非絕對,這可能會因為編輯器或開發環境的設定而有所不同,導致縮排混亂,撰寫程式碼時要注意統一用一種縮排方式,若混用可能會報錯。

if - else 敘述

繼續用上面的例子擴充,若分數不到六十分印出 "不及格,打屁屁",如果只用 if 判斷的話要寫成

if score >= 60:
    print('恭喜及格!')
if score < 60:
    print('不及格,打屁屁')

但你有更好的寫法 ─ 使用 else 去執行當條件不成立時要做的事

if score >= 60:
    print('恭喜及格!')
else:
    print('不及格,打屁屁')

if - elif - else 敘述

當你條件有一個以上要寫該怎麼辦,繼續用上面的例子來說明:分數超過六十分就印出 "恭喜及格" 、分數不到六十分印出 "請補考" 、分數不到四十分印出 "請重修" ,如果只用 if 判斷的話要寫成

if score >= 60:
    print('恭喜及格!')
if score < 60 and score >= 40:
    print('請補考')
if score < 40:
    print('請重修')

有沒有覺得有點麻煩,而且這種寫法即便條件已在第一個 if 成立,但程式碼還是續繼往下白做工,總共判斷了三次,以這種案例來說就是 elifelse 攜手出馬的時刻了,其中 elif 可以同時出現一個以上

if score >= 60:
    print('恭喜及格!')
elif score >= 40:
    print('請補考')
else:
    print('請重修')

運算子又來了

Day 2 中有提及兩種運算子,今天來介紹另外兩種,剛剛有用到的運算子

邏輯運算子(Logical Operators)

用來組合條件敘述句

運算子 敘述 用法
and 當敘述句皆為真時,回傳 True x < 60 and x >= 40
or 當敘述句有一個為真時,回傳 True x == 0 or x == 100
not 反轉敘述句的結果,當敘述句為真時,回傳 False not (x == 0 or x == 100 )

比較運算子(Comparison Operators)

用來比較兩個值

運算子 敘述 用法
== 等於 x == y
!= 不等於 x != y
> 大於 x > y
< 小於 x < y
>= 大於等於 x >= y
<= 小於等於 x <= y

if (- elif) - else 巢起來

有沒有覺得 elif 似曾相似呢?其實他是 if + else 的縮寫,把上面的 "恭喜及格" 、 "請補考" 、 "請重修" 的例子拿來用巢狀結構改寫,這裡一樣要注意縮排的使用,縮排的層級會影響程式碼的邏輯

if score >= 60:
    print('恭喜及格!')
    if score == 100:
        print('資優生是你!')
else:
    if score >= 40:
        print('請補考')
    else:
        print('請重修')

這裡一開始先用是否合格做分界點,合格才去判斷是否滿分,滿分才繼續印字,沒滿分就不做事情;不合格的情況要判斷可以補考還是要重修。


#Python







Related Posts

JavaScript Drum Kit

JavaScript Drum Kit

因舊專案 更換node 版本

因舊專案 更換node 版本

CodeWars 解題心得 : RGB To Hex Conversion

CodeWars 解題心得 : RGB To Hex Conversion


Comments