更新日期: 2023 年 4 月 14 日
Python 如果的事,if 不僅限於愛情。
if 的意思是如果、假如,在英語的世界中,if 是連接詞(conjunction),連接兩個句子;Python 的世界裡,if 是陳述句,陳述完一定要加上冒號,心意才能傳達。
談到如果,不自覺的就會有首歌的旋律進入腦中:如果的事。
這首歌很具體的把如果體現出來。在 Python 的世界中,if (如果) 也以類似的方式運作,叨叨地訴說疑問,尋找符合的答覆。
if 陳述句,給 Python 選擇的機會
Python 的世界中,跟我們現實生活的世界一樣有很多情況需要判別、選擇。
如果的事歌詞中,唱著:
如果你已經不能控制 每天想我一次 如果你因為我而誠實
當問著如果的人,獲得肯定、正向的回答時,那就是愛情到了。
但若是否定的,那麼有可能還處在單戀的狀況。
條件之後都對應著一個結果。
在設計 Python 程式時,也會有很多事要判別與選擇,這時也是使用如果 if 來運作。
我們在 if 之後陳述一個條件,如果條件成立,即條件為真 True,就執行指定的事情。
如果 if 的條件不成立,也就是 Fasle 的狀況時,便不會執行 if 陳述下的任務。
當你在編寫 if 陳述句時,要把握三個重點:
- if 陳述句需配合冒號使用。
- 屬於該條件的任務,必須縮排。
- if 預設為 True 才執行。
只有一個條件時
以一個簡單的例子來看看,什麼叫做條件成立,什麼是指定的事情。
這個例子中,我們把 1 這個數值,指派給名為 a 的變數。
接著使用 if 陳述句,if a == 1:
下方例子的程式碼代表的意思是:如果 a 這個變數等於 1 是正確的,就執行冒號後方所指派的事,印出 great!這個字串。
>>>a = 1
>>>if a == 1:
>>> print('great!')
great!
屬於 if 陳述句工作範疇的程式碼,會在冒號後的下一行,以縮排呈現,一般而言是退縮四個空格。
如果沒有縮排,就不屬於 if 的工作範疇。
上方這個例子中,詢問如果的事情是指 a == 1這個條件有沒有成立,指定的事情是 print(‘great!’)。
當你有很多條件要判斷
當你有很多條件要判斷是不是成立的,正確時就執行指定的動作,有兩種操作手法幫你處理。
分別是 :
- 使用 if、elif、else
- 使用多個 if
這兩個手法面對的情況不同,產出的結果也不同,依照你需要的狀況使用。
使用 if、elif、else 進行比較後擇一執行
Python 在運作 if、elif、else 時,會由上而下逐一的檢測條件是否符合,當有一個條件成立時,便會跳出確認條件的流程。
二擇一的狀況
使用 if 跟else,else 是否則的意思,就是當 if 條件不成立時,就執行else所要求的任務。
例如下方的例子,如果 a 為 1,就印出 great,否則就印出 oops!
if 跟 else 陳述句的最後都需要加上冒號,並將條件下要執行的任務以縮排顯示。
>>>a = 5
>>>if a == 1:
>>> print('great!')
>>>else:
>>> print('oops!')
oops!
三個(含)以上擇一的狀況
當你的條件有三個,或者三個以上時,我們特別邀請 elif 來幫忙,elif 是「其他的如果」else if 的意思。
例如,海底總動員的聚會中,你只認識 Nemo、Dory,其他人你都不認識,遇到新朋友你都先跟他們說聲 nice to meet you.。
>>>name = 'Nick'
>>>if name == 'Nemo':
>>> print('How are you, Nemo?')
>>>elif name == 'Dory':
>>> print('Hello, Dory.')
>>>else:
>>> print('Hi,' + name + ' , nice to meet you.')
Hi, Nick, nice to meet you.
值得留意的是,使用 if-elif 路徑結構時,並非一定要放入else。
以吃到飽餐廳推出來優惠來舉例,「飽咖咖」餐廳推出促銷優惠:
5歲以下兒童免費。
18歲以下青少年 99元。
60歲以下 399元
60歲(含)以上 99元。
程式碼可以這樣寫:
>>>age = 12
>>>
>>>if age < 5:
>>> price = 0
>>>elif age < 18:
>>> price = 99
>>>elif age < 60:
>>> price = 399
>>>elif age >= 60:
>>> price =99
>>>
>>>print('Your meal cost is NTD' + str(price) + '.')
Your meal cost is NTD 99.
else涵蓋所有被 if、elif 排除在外的條件,但如果你不需要這麼廣泛的條件,你可以不使用 else,這樣還可以讓你的程式邏輯更清楚,也確保只有滿足相關條件時,程式才會執行,避免漏洞。
使用多個 if,只要條件符合都執行
if-elif-else 結構,只能顯示滿足其中一個條件的結果,如果你想要檢測多個條件是否符合,你可以使用多個 if。
假設現在開一個海底總動員的小聚會,報名的名單是 name 這個串列,當 name 串列中有 Nemo、Dory、Bruce 這三個人,就邀請他們,其他人則不會被邀請。
>>>name = ['Nick', 'Dory', 'Bruce']
>>>if 'Nemo' in name:
>>> print('invite Nemo.')
>>>if 'Dory' in name:
>>> print('invite Dory.')
>>>if 'Bruce' in name:
>>> print('invite Bruce.')
>>>print('Above guests are invited.')
invite Dory.
invite Bruce.
Above guests are invited.
因為 Nemo 沒有報名參加,沒有在 name 的串列中,所以只邀請了 Dory 跟 Bruce 參加聚會。
Python if與各類運算子結合運用
if 陳述句可以結合各類的運算子來構成各式各樣的條件,包括 and 、 or 、 in、==、!= 等運算子。
下方的例子便使用了 >、< 這兩個比較運算子,以及 and 這個邏輯運算子來陳述條件。
>>>x = 8
>>>if x > 1 and x < 10:
>>> print('buy')
>>>else:
>>> print('save more money.')
buy
你也可以運用成員運算子in 來陳述條件。
假如你的採買清單中有米(rice)這個品項,你就會去傳統市場採購,如果沒有你就去超市買。
>>>to_buy_list = ['egg', 'apple', 'rice', 'pork', 'corn']
>>>if 'rice' in to_buy_list:
>>> store = 'traditional markets'
>>>else:
>>> store = 'PX supermarket'
>>>
>>>print('I am going to ' + store + '.')
I am going to traditional markets.
for 與 while 迴圈也是 if 常會結合的應用,我們在迴圈那篇文章專門討論。
如果想瞭解更多 if 的觀念與操作,可以閱讀《Python程式設計的樂趣》、《精通 Python》這兩本書,都有單獨針對 if 做詳細的說明及練習。
延伸閱讀: