📆從 閏年判斷 學 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 ... 語法對應到的就是我們日常生活中的邏輯與條件判斷

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

80會員
417內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
河內塔的遊戲描述 有三個柱子A柱,B柱,C柱。 A柱上有 N 個 (N>1) 穿孔圓盤,盤的尺寸由下到上依次變小。 要求按下列規則透過合法移動,將所有圓盤移至 C 柱: 1. 每次只能移動頂端的一個圓盤; 2. 大圓盤不能疊在小圓盤上面。
今天要實作和體驗的是拼單字的小遊戲,類似小時候在報紙、英文童書、或著電子辭典的小遊戲,一開始都是空白,隨著使用者拼對而逐漸顯示原本的單字樣貌,直到整個單字拼出來為止。 場景: 電腦隨機從單字庫裡面撈一個單字出來。 讓使用者扮演玩家去玩拼單字的遊戲。
相信大家小時候都有和朋友或玩伴玩過一個猜數字的小遊戲,一個人先在1~100裡面設定一個隱藏數字,其他的人去猜,看誰是最後一個猜中的就算輸,或者看誰最快猜中就算贏。 今天要示範如何用Python寫一個猜數字遊戲, 並且會從上層的思考邏輯開始,一步步構建出這個猜數字的小遊戲。
在流程控制中,最常用的就是for loop 或是 while loop 語法了。 最常見的場景就是根據條件判斷式,重複執行特定的指令。 如果要在python寫出類似C/C++ for loop,可以怎麼寫呢? 透過索引去進行迭代 for var in range( start=0, sto
Array可以說是各種語言除了基本型別之外,最常用的資料型別與容器之一了。 Array 這種連續格子狀的資料結構,在Python要怎麼表達呢? 建立一個空的陣列 最簡單也最直接的寫法就是 array = [] # Python list [] 就對應到大家熟知的array 陣列型態的資料結
河內塔的遊戲描述 有三個柱子A柱,B柱,C柱。 A柱上有 N 個 (N>1) 穿孔圓盤,盤的尺寸由下到上依次變小。 要求按下列規則透過合法移動,將所有圓盤移至 C 柱: 1. 每次只能移動頂端的一個圓盤; 2. 大圓盤不能疊在小圓盤上面。
今天要實作和體驗的是拼單字的小遊戲,類似小時候在報紙、英文童書、或著電子辭典的小遊戲,一開始都是空白,隨著使用者拼對而逐漸顯示原本的單字樣貌,直到整個單字拼出來為止。 場景: 電腦隨機從單字庫裡面撈一個單字出來。 讓使用者扮演玩家去玩拼單字的遊戲。
相信大家小時候都有和朋友或玩伴玩過一個猜數字的小遊戲,一個人先在1~100裡面設定一個隱藏數字,其他的人去猜,看誰是最後一個猜中的就算輸,或者看誰最快猜中就算贏。 今天要示範如何用Python寫一個猜數字遊戲, 並且會從上層的思考邏輯開始,一步步構建出這個猜數字的小遊戲。
在流程控制中,最常用的就是for loop 或是 while loop 語法了。 最常見的場景就是根據條件判斷式,重複執行特定的指令。 如果要在python寫出類似C/C++ for loop,可以怎麼寫呢? 透過索引去進行迭代 for var in range( start=0, sto
Array可以說是各種語言除了基本型別之外,最常用的資料型別與容器之一了。 Array 這種連續格子狀的資料結構,在Python要怎麼表達呢? 建立一個空的陣列 最簡單也最直接的寫法就是 array = [] # Python list [] 就對應到大家熟知的array 陣列型態的資料結
你可能也想看
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
這篇內容,將會講解什麼是「if else」,以及與「if else」相關的知識。包括if else的簡介、if、if else、else if、套娃式的if。
Thumbnail
在這一章中,我們介紹了PHP中的流程控制語句,包括if、else if、else、三元運算子、switch語句、for迴圈、foreach迴圈、while迴圈、do-while迴圈、循環嵌套以及控制迴圈的語句如break、continue、goto和return。
Thumbnail
此章節的目的是介紹Java程式語言中的流程控制結構,包括條件語句(if, else if, else)、三元運算子、switch語句,以及各種迴圈(for, foreach, while)。同時,也解釋了如何在迴圈中使用控制語句來改變程式的執行流程。每種主題都配有示例程式碼以幫助理解。
Thumbnail
本章節帶領讀者了解 Kotlin 的流程控制語法,包括條件判斷、當做三元運算子使用的 if 表達式、用來替代 switch 語句的 when 語句、用於迴圈運作的 for 和 while 語句,以及控制迴圈執行流程的語句和標籤概念。該章節目的在於讓讀者深入掌握流程控制功能,進一步提升編程技巧。
Thumbnail
本章節提供了關於Typescript中流程控制元素的詳細介紹,包括if, else if, else語句,三元運算子,switch語句,各種for迴圈,while迴圈,循環嵌套和控制迴圈語句(break,continue和標籤)的使用。
Thumbnail
在人生中總是會遇到許多選擇,做了不同的選擇產生的結果也會不一樣,大多時候都是在為了要吃什麼在抉擇,小孩才做選擇大人全部都要,全部都要何嘗也不是一個選擇。 在Python程式語言中也有選擇的語法,就是If Else,如果是就做什麼,不是就做什麼,有別於其他程式語言,他不一定要有else,可以只有If
Thumbnail
邏輯運算子 它們在許多情境下都是程式語言中重要的工具,用於進行條件判斷和控制流程 在日常中總會遇到有些需要思考判斷的問題,比如要買東西,就會考慮到CP值,東西要好且要便宜,就是and的概念,如果在一些比較複雜的狀況,例如想晚餐吃什麼,就會想火鍋或燒烤都行,這就是or的概念。
Thumbnail
IF,Switch,三元運算子語法說明 IF條件選擇結構說明 IF為布林條件,當()內條件式滿足True執行if區塊的程式碼,不滿足則執行else區塊的程式碼,若無else也行。
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
這篇內容,將會講解什麼是「if else」,以及與「if else」相關的知識。包括if else的簡介、if、if else、else if、套娃式的if。
Thumbnail
在這一章中,我們介紹了PHP中的流程控制語句,包括if、else if、else、三元運算子、switch語句、for迴圈、foreach迴圈、while迴圈、do-while迴圈、循環嵌套以及控制迴圈的語句如break、continue、goto和return。
Thumbnail
此章節的目的是介紹Java程式語言中的流程控制結構,包括條件語句(if, else if, else)、三元運算子、switch語句,以及各種迴圈(for, foreach, while)。同時,也解釋了如何在迴圈中使用控制語句來改變程式的執行流程。每種主題都配有示例程式碼以幫助理解。
Thumbnail
本章節帶領讀者了解 Kotlin 的流程控制語法,包括條件判斷、當做三元運算子使用的 if 表達式、用來替代 switch 語句的 when 語句、用於迴圈運作的 for 和 while 語句,以及控制迴圈執行流程的語句和標籤概念。該章節目的在於讓讀者深入掌握流程控制功能,進一步提升編程技巧。
Thumbnail
本章節提供了關於Typescript中流程控制元素的詳細介紹,包括if, else if, else語句,三元運算子,switch語句,各種for迴圈,while迴圈,循環嵌套和控制迴圈語句(break,continue和標籤)的使用。
Thumbnail
在人生中總是會遇到許多選擇,做了不同的選擇產生的結果也會不一樣,大多時候都是在為了要吃什麼在抉擇,小孩才做選擇大人全部都要,全部都要何嘗也不是一個選擇。 在Python程式語言中也有選擇的語法,就是If Else,如果是就做什麼,不是就做什麼,有別於其他程式語言,他不一定要有else,可以只有If
Thumbnail
邏輯運算子 它們在許多情境下都是程式語言中重要的工具,用於進行條件判斷和控制流程 在日常中總會遇到有些需要思考判斷的問題,比如要買東西,就會考慮到CP值,東西要好且要便宜,就是and的概念,如果在一些比較複雜的狀況,例如想晚餐吃什麼,就會想火鍋或燒烤都行,這就是or的概念。
Thumbnail
IF,Switch,三元運算子語法說明 IF條件選擇結構說明 IF為布林條件,當()內條件式滿足True執行if區塊的程式碼,不滿足則執行else區塊的程式碼,若無else也行。