📆從 閏年判斷 學 Python 的 if ... else ... 語法

更新於 發佈於 閱讀時間約 8 分鐘


在程式語言裡,對應到多重選擇路徑判斷的語法,
最通俗也最常見的就是if ... else ... 。

今天,我們將從最基本的 若A條件成立 則...否則 ... 的 if ... else ...開始講起,
搭配幾個範例做說明,最後以一個經典的閏年判定最為結尾的Demo


若 條件成立 則 ... 否則 ... 的口語與邏輯表達

口語的說法

A 條件成立

....A條件成立時要做的事情

否則
....A條件不成立時,要做的事情​


對應的python語法

if 條件A:
...A條件成立時要做的事情

else:
...A條件不成立時,要做的事情​


範例1: 根据天氣做出行動


假如是晴天,則可以曬衣服

否則,不是晴天,則只能用烘衣機


對應的python程式碼如下

import random

# 初學者可先跳過隨機數產生的細節。​
# 用隨機數來決定是否為晴天
is_sunny = ( random.random() > 0.5 )

print(f"是晴天嗎? {is_sunny}")

if is_sunny:
print("曬衣服")

else:
print("用烘衣機")

輸出結果(晴天, is_sunny=True)

是晴天嗎? True
曬衣服

輸出結果(不是晴天, is_sunny = False)

是晴天嗎? False
用烘衣機

若 A 則 ... 若 B 則 ... 否則 ... 的口語與邏輯表達

口語的說法

A 條件成立

....A條件成立時要做的事情

B 條件成立​

....A條件成立時要做的事情

否則

....A條件 與 B條件都不成立時,要做的事情


對應的python語法

if 條件A:

...做A條件成立時要做的事情

elif ​條件B:

...做B條件成立時要做的事情

如果有好多個條件,可自行串接

else:

...A條件 和 B條件都不成立時,要做的事情​


如果您以前學過C/C++ 請記得 python 的 else if 語法略有不同

C/C++ 的else if 在python 叫做 elif


範例2: 根据溫度做出行動

假如溫度是>38度C,則不要出門。

假如溫度是<=38度C 而且 溫度是>30度C,則出門要撐陽傘。

剩餘情況則正常穿搭。


對應的python程式碼如下

import random

# 初學者可先跳過隨機數產生的細節。​
# 用隨機數來決定溫度
degree = int( 25 + ( random.random() ) * 20 )

print(f"溫度 {degree}度C")

if degree >= 38 :
print("不要出門")

elif degree >30:
print("出門要帶陽傘")

else:
print("正常穿搭")

輸出結果(溫度>38度C的情況)

溫度 40度C
不要出門

輸出結果( 38度C >= 溫度 >30度C 的情況)

溫度 36度C
出門要帶陽傘

輸出結果( 溫度 <= 30度C 的情況)

溫度 25度C
正常穿搭

if ... elif ... else ...可以多層嵌套組合


條件比較複雜時,可以多層嵌套組合,表達不同的細部條件判斷。

我們可以結合剛剛範例1和範例2天氣和溫度的條件,做出更細緻的判斷。


範例3: 根据天氣和溫度,做出不同的行動

站在人的視角,假設下列情況以及判斷依據

假如是晴天

則可以先把衣服拿去曬。

假如溫度是>38度C,則不要出門。

假如溫度是<=38度C 而且 溫度是>30度C,則出門要撐陽傘。

剩餘情況則正常穿搭。


否則,不是晴天

只能用烘衣機。
不方便出門。

對應的python程式碼

import random

# 初學者可先跳過隨機數產生的細節。​
# 用隨機數來決定是否為晴天
is_sunny = ( random.random() > 0.5 )

print(f"是晴天嗎? {is_sunny}")

# 初學者可先跳過隨機數產生的細節。​
# 用隨機數來決定溫度
if is_sunny:
degree = int( 25 + ( random.random() ) * 20 )
else:
degree = int( 15 + ( random.random() ) * 15 )

print(f"溫度 {degree}度C")

if is_sunny:

print("先把衣服拿去曬")

if degree >= 38 :
print("不要出門")

elif degree >30:
print("出門要帶陽傘")

else:
print("正常穿搭")

else:
print("只能用烘衣機")
print("不方便出門")

輸出結果(晴天 而且 溫度32度C的情況)

是晴天嗎? True
溫度 32度C
先把衣服拿去曬
出門要帶陽傘

輸出結果(晴天 而且 溫度43度C的情況)

是晴天嗎? True
溫度 43度C
先把衣服拿去曬
不要出門

輸出結果(非晴天 而且 溫度26度C的情況)

是晴天嗎? False
溫度 26度C
只能用烘衣機
不方便出門

讀者可試著多執行幾次,觀察不同的隨機天氣與溫度對應到的邏輯判斷與輸出結果。


Demo: 判定是否為閏年

口語表達的規則:

若年份逢4的倍數,則通常是閏年,但是有兩個特殊情況要處理

如果是世紀年(100的倍數),則不是閏年,例如1700, 1800, 1900不是閏年。

如果是世紀年(100的倍數)而且又是400的倍數,則又恢復成閏年,例如2000年是閏年。

剩下情況都不是閏年。


重新整理過的判斷規則(優先處理特殊情況):

如果是400年的倍數,則肯定是閏年。

如果不是400年的倍數,但是是100年的倍數(世紀年),則不是閏年。

如果不是上述兩種情況(不是400也不是100的倍數),但是是4的倍數,則肯定是閏年。

剩下情況都不是閏年。


怎麼判斷是某個數字k的倍數?

如果一個是數字num是k的倍數,那麼 num 除以k得到的餘數一定等於零。


%在python裡面就是對某個數字做除法取餘數的意思。


例如:

# python 程式碼範例
print( num % 400 == 0 )

假如 num % 400 == 0 成立,
代表num 除以400得到的餘數是0,所以num 是 400的倍數。


同理類推


# python 程式碼範例
print( num % 100 == 0 )

假如 num % 100 == 0 成立,

代表num 除以100得到的餘數是0,所以num 是 100的倍數。


# python 程式碼範例
print( num % 4 == 0 )

假如 num % 4 == 0 成立,

代表num 除以4得到的餘數是0,所以num 是 4的倍數。


對應的python程式碼(不只一種寫法,這邊只是提供一個解答參考)

def is_leapyear(year):

  if year % 400 == 0:
# 400年的倍數,則肯定是閏年。
    return True

  elif year % 100 == 0:
# 不是400年的倍數,但是是100年的倍數(世紀年),則不是閏年。
    return False

  elif year % 4 == 0:
# 不是上述兩種情況(不是400也不是100的倍數),但是是4的倍數,則肯定是閏年。
    return True

  else:
# 剩下情況都不是閏年。
    return False



def check(year):

  if is_leapyear(year):
    print(f"{year} is a leap year.")

  else:
    print(f"{year} is NOT a leap year.")

  return


year = int(input("Enter a year: "))
check(year)


輸出結果(2000年)

Enter a year: 2000 
2000 is a leap year.


輸出結果(1900年)

Enter a year: 1900 
1900 is NOT a leap year.


輸出結果(1996年)

Enter a year: 1996
1996 is a leap year.


輸出結果(2001年)

Enter a year: 2001 
2001 is NOT a leap year.

結語


其實if ... elif ... else ... 語法對應到的就是我們日常生活中的邏輯與條件判斷

讀者可以試著從生活中的範例開始練習,先歸納定義出明確的規則,接著寫幾個小程式測試一下是否與預期中的執行結果相符合。

留言
avatar-img
留言分享你的想法!
我哪天會不會看著、看著就看懂了呢?🤔
小松鼠-avatar-img
發文者
2024/08/11
林燃(創作小說家)
小松鼠-avatar-img
發文者
2024/08/13
動手學python 的引言與目錄提及了這篇文章,趕快過去看看吧!
avatar-img
小松鼠的演算法樂園
95會員
427內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
2024/10/10
從Python 內建deque資料結構的角度切入, 同時了解deque 與 FIFO Queue相關的function用法。 collections.deque是一種兩端點皆可進出的雙端佇列 在兩端點高效地在O(1)常數時間內添加和刪除元素。 這使得deque非常適合實現FIFO Queue
Thumbnail
2024/10/10
從Python 內建deque資料結構的角度切入, 同時了解deque 與 FIFO Queue相關的function用法。 collections.deque是一種兩端點皆可進出的雙端佇列 在兩端點高效地在O(1)常數時間內添加和刪除元素。 這使得deque非常適合實現FIFO Queue
Thumbnail
2024/09/27
井字遊戲(OOXX)的遊戲描述 Tic Tac Toe(井字遊戲)是經典的雙人棋盤遊戲,在一個3x3的方格中進行。 每回合兩個玩家輪流選一個位置,先讓自己的符號(是 X 或 O)在 水平線、垂直線或對角線上連成一線的玩家宣告獲勝。
Thumbnail
2024/09/27
井字遊戲(OOXX)的遊戲描述 Tic Tac Toe(井字遊戲)是經典的雙人棋盤遊戲,在一個3x3的方格中進行。 每回合兩個玩家輪流選一個位置,先讓自己的符號(是 X 或 O)在 水平線、垂直線或對角線上連成一線的玩家宣告獲勝。
Thumbnail
2024/09/23
深入探討圖(Graph)的基本概念 及 最短路徑Shortest Path的尋找。 我們專注於廣度優先搜尋(BFS)演算法,以等權圖的最短路徑為例, 詳細說明如何利用BFS從起點擴散到終點,並且提供詳細的程式碼範例。 透過實作,讀者能夠更清楚理解圖論及BFS的應用,並體會水波紋擴散模型的重要性。
Thumbnail
2024/09/23
深入探討圖(Graph)的基本概念 及 最短路徑Shortest Path的尋找。 我們專注於廣度優先搜尋(BFS)演算法,以等權圖的最短路徑為例, 詳細說明如何利用BFS從起點擴散到終點,並且提供詳細的程式碼範例。 透過實作,讀者能夠更清楚理解圖論及BFS的應用,並體會水波紋擴散模型的重要性。
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
介紹朋友新開的蝦皮選物店『10樓2選物店』,並分享方格子與蝦皮合作的分潤計畫,註冊流程簡單,0成本、無綁約,推薦給想增加收入的讀者。
Thumbnail
介紹朋友新開的蝦皮選物店『10樓2選物店』,並分享方格子與蝦皮合作的分潤計畫,註冊流程簡單,0成本、無綁約,推薦給想增加收入的讀者。
Thumbnail
當你邊吃粽子邊看龍舟競賽直播的時候,可能會順道悼念一下2300多年前投江的屈原。但你知道端午節及其活動原先都與屈原毫無關係嗎?這是怎麼回事呢? 本文深入探討端午節設立初衷、粽子、龍舟競渡與屈原自沉四者。看完這篇文章,你就會對端午、粽子、龍舟和屈原的四角關係有新的認識喔。那就讓我們一起解開謎團吧!
Thumbnail
當你邊吃粽子邊看龍舟競賽直播的時候,可能會順道悼念一下2300多年前投江的屈原。但你知道端午節及其活動原先都與屈原毫無關係嗎?這是怎麼回事呢? 本文深入探討端午節設立初衷、粽子、龍舟競渡與屈原自沉四者。看完這篇文章,你就會對端午、粽子、龍舟和屈原的四角關係有新的認識喔。那就讓我們一起解開謎團吧!
Thumbnail
在程式語言裡,對應到多重選擇路徑判斷的語法, 最通俗也最常見的就是if ... else ... 語法。 今天,我們將從最基本的 若A條件成立 則...否則 ... 的 if ... else ...開始講起, 搭配幾個範例做說明,最後以一個經典的閏年判定最為結尾的Demo
Thumbnail
在程式語言裡,對應到多重選擇路徑判斷的語法, 最通俗也最常見的就是if ... else ... 語法。 今天,我們將從最基本的 若A條件成立 則...否則 ... 的 if ... else ...開始講起, 搭配幾個範例做說明,最後以一個經典的閏年判定最為結尾的Demo
Thumbnail
1.0 從函數到函算語法 1.4 函算語法 1.4.1 語法範疇理論導論 七 指派範疇是第一步, 第二步是設定推導規則。 推導規則的作用是對某一給定的表式63 進行判定,看它是否一個貫通的表式(或詞構)。就上述英語例句而言,我們只需一個簡單的單向通則 (general rule)﹕6
Thumbnail
1.0 從函數到函算語法 1.4 函算語法 1.4.1 語法範疇理論導論 七 指派範疇是第一步, 第二步是設定推導規則。 推導規則的作用是對某一給定的表式63 進行判定,看它是否一個貫通的表式(或詞構)。就上述英語例句而言,我們只需一個簡單的單向通則 (general rule)﹕6
Thumbnail
在 Kotlin 中,if 條件控制,讓你能夠根據條件的成立與否來執行不同的程式碼塊。它可以被單獨使用,也可以與 else 搭配使用,為程式添加更多的邏輯控制。
Thumbnail
在 Kotlin 中,if 條件控制,讓你能夠根據條件的成立與否來執行不同的程式碼塊。它可以被單獨使用,也可以與 else 搭配使用,為程式添加更多的邏輯控制。
Thumbnail
接下來來看 AND、OR、NOT 是怎麼被實際運用的!
Thumbnail
接下來來看 AND、OR、NOT 是怎麼被實際運用的!
Thumbnail
資料型態-變數概念 上面這張圖片傳傳達了三個概念, 常值:可以是數值、浮點數、字串、布林等資料, 變數名稱:這邊也很好理解,就是好記得名稱,這邊使用中文是方便初學者入門, 盒子:代表在Python底層運作的狀況,Python創建變數時,會先在記憶體創建型態物件,這邊是數字型態,所以創建數字物件。
Thumbnail
資料型態-變數概念 上面這張圖片傳傳達了三個概念, 常值:可以是數值、浮點數、字串、布林等資料, 變數名稱:這邊也很好理解,就是好記得名稱,這邊使用中文是方便初學者入門, 盒子:代表在Python底層運作的狀況,Python創建變數時,會先在記憶體創建型態物件,這邊是數字型態,所以創建數字物件。
Thumbnail
介紹條件控制流程,包含組成它的比較運算子、條件運算式、條件語句。 繼講解完邏輯運算之後,我們終於要開始認識控制流程的其中之一:條件(Condition)。 如同在程式的邏輯思維中介紹到的,我們需要決定問題為 True 需要執行什麼,反之又要執行什麼。這些路徑的選擇便是由條件控制流程所實現。
Thumbnail
介紹條件控制流程,包含組成它的比較運算子、條件運算式、條件語句。 繼講解完邏輯運算之後,我們終於要開始認識控制流程的其中之一:條件(Condition)。 如同在程式的邏輯思維中介紹到的,我們需要決定問題為 True 需要執行什麼,反之又要執行什麼。這些路徑的選擇便是由條件控制流程所實現。
Thumbnail
介紹邏輯運算的觀念,包含布林值、運算子與運算式的介紹。並說明如何使用 Python 撰寫這些觀念。
Thumbnail
介紹邏輯運算的觀念,包含布林值、運算子與運算式的介紹。並說明如何使用 Python 撰寫這些觀念。
Thumbnail
1 Down the rabbit hole: 論理型 掉下兔子洞 七 現在讓我們再簡述一下前面強調過的幾個要點: 如果我們在兩件事態 (表達為兩個句子) 之間建立一個假設性的關係﹐及用條件句式 (前件 + 後件) 表述﹔ 並且﹐如果我們接受前件﹔ 那麼﹐我們即被條件句式
Thumbnail
1 Down the rabbit hole: 論理型 掉下兔子洞 七 現在讓我們再簡述一下前面強調過的幾個要點: 如果我們在兩件事態 (表達為兩個句子) 之間建立一個假設性的關係﹐及用條件句式 (前件 + 後件) 表述﹔ 並且﹐如果我們接受前件﹔ 那麼﹐我們即被條件句式
Thumbnail
這篇文章將會講述 if 判斷式的簡寫與可讀性維護。
Thumbnail
這篇文章將會講述 if 判斷式的簡寫與可讀性維護。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News