iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0
Python

初學者的 30 天 Python 復健課程系列 第 11

復健第十一天:如果怎樣,要不然怎樣的條件邏輯 Conditionals

  • 分享至 

  • xImage
  •  

時間不多,今天直接進入正題!

在許多的程式語言中,執行順序一般都是由上往下,逐字逐句的檢視與執行,而透過某些關鍵字,我們可以改變或跳過某些程式碼的執行,而這個流程通常會稱作流程控制(control flow)或是條件判斷 (
conditionals)。

Python 中有哪些條件邏輯?

在 Python 中,執行流程可以透過兩種方式產生改變:

  • 條件執行:當某個表達式(statement)為 True 時,才會執行一段或多段程式碼。
  • 重複執行:只要某個表達式為 True,一段或多段程式碼將會重複執行。

如果怎樣,要不然怎樣

為了進行流程控制,我們可以使用 if(如果)與 else(要不然)這兩個關鍵字,來描述在特定狀況下,應該對應產生的行為。

if 條件

在 Python 中,關鍵字 if 可以用來檢查某個表達式,也就是「某個條件」是否為 True,當確定為 True 時,則會執行相應的程式區塊。

a = 3
if a > 0:
    print('A 是正數')  # A 是正數

如上範例所示,由於 3 大於 0,所以此時 if 的條件結果為 True,因此執行了冒號後面的區塊程式碼。

如果條件為 False,那麼程式碼區塊就不會被執行。

else 條件

a = -1
if a > 0:       # 由於 -1 > 0 並不成立,後面的程式碼並不會執行。
    print('A 是正數')

在只有 if 的狀況下,當 if 的表達式得到的結果為 False,後續的程式碼都不會被執行,也因此為了處理 if 條件為 False 的情況,我們可以使用 else 語句,讓 Python 執行 else 區塊的程式碼。


a = -1
if a > 0:
    print('A 是正數')
else:
    print('A 是負數') # A 是負數

elif 條件

那如果我們的條件多於兩個呢?畢竟 a 除了大於 0、小於 0,也有可能等於 0,所以此時我們可以使用 elif(或者如果),當 elif 的表達式也都為 False 時,Python 最後才會執行 else 區塊的程式碼。

a = 0
if a > 0:
    print('A 是正數')
elif a == 0:
    print('A 是零') # A 是零
else:
    print('A 是負數')

因為 a = 0 符合 elif 表達式的條件,所以會執行 print('A 是零'),並忽略後續的 else 的條件判斷。

邏輯運算子 Logical Operators 可以做什麼?

復健第三天:布林值 Boolean 與運算子 Operators的文章裡,我們講到可以使用邏輯運算子 Logical Operators來進行邏輯運算。

and 並且

我們可以透過 and 邏輯運算子來簡化多個條件的判斷,使用 and 可以依次檢查所有條件,若所有條件皆為 True,才會執行程式碼。而只要其中一個條件為 False,則立刻停止檢查並跳到下一個條件判斷(如果有存在的話)。

a = 0
if a > 0 and a % 2 == 0:
        print('A 是正數且是偶數')
elif a > 0 and a % 2 !=  0:
     print('A 是正數')
elif a == 0:
    print('A 是零')  # 這行會被執行
else:
    print('A 是負數')

or 或者

and 的功能類似類似,or 會依次檢查條件是否成立。只要其中任何一個條件為 True,就會立刻停止檢查並執行區塊內的程式碼;若「所有條件」皆為 False 時,才會跳到下一個條件判斷(如果有的話)。

user = 'James'
access_level = 6
if user == 'admin' or access_level >= 4:
        print('授予存取權限!')    # 由於 access_level 大於 4,這行會被執行
else:
    print('存取權限拒絕!')

透過以上的條件判斷,我們可以簡易地模擬現實生活中的許多情境,像是買東西:

  • 假設我的錢包有超過 80 元且天氣為大太陽,我會買一杯手搖杯
  • 假設我的錢包有超過 20 元,我會買一瓶養樂多
  • 不然我什麼都不買

把以上這句話轉換成 Python 的 control flow,則可以寫為:

我的錢包 = 35
天氣 = '大太陽'

if 我的錢包 > 80 and 天氣 = '大太陽':
    print('手搖飲')
elif 我的錢包 > 35:
    print('養樂多')
else:
    print('我什麼都不買')

# 最後會印出 '養樂多'

後記

流程控制算是我覺得所有學習的章節裡,最有趣也最貼近生活的地方,因為我們的日常裡有許多事件都要依照各種條件、情境來判斷該做出什麼選擇,可是我們身為人無法達到全然的理性,所以像是前面的「買飲料」情境題,當我們的錢包有 100 元時,無論天氣是否為 '大太陽',有很大的機率還是會去買手搖杯(吧?)。


上一篇
復健第十天:不可思議的字典 Dictionary
下一篇
復健第十二天:轉呀轉呀的迴圈 Loops
系列文
初學者的 30 天 Python 復健課程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言