現實生活往往都是複雜的,會針對不同情況做出不同反應,在 Python 中我們可以使用 if
、 else
、 elif
來因應不同的情況。
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
成立,但程式碼還是續繼往下白做工,總共判斷了三次,以這種案例來說就是 elif
、 else
攜手出馬的時刻了,其中 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('請重修')
這裡一開始先用是否合格做分界點,合格才去判斷是否滿分,滿分才繼續印字,沒滿分就不做事情;不合格的情況要判斷可以補考還是要重修。