不間斷 Python 挑戰 Day 4 - if 流程控制

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

當我們的程式需要根據某些狀況做出判斷,例如某些條件成立的話,程式就對應做出某種行為,這時單純從頭執行到尾的程式便無法滿足我們的需求,因此便需引進流程控制的概念,也就是if敘述以及其相關的語法,來讓程式可以完成更複雜的工作。

if 敘述

最基本if敘述語法如下,如果滿足condition1的條件判斷,則執行A程式碼區塊,否則就結束判斷。

if condition1:   
  Do A


raw-image


if / else 敘述

進一步,如果滿足condition1的條件判斷時執行A程式碼區塊,不滿足時要執行B程式碼區塊,則可以用if/else敘述。

if condition1:
  Do A
else:
  Do B
raw-image

巢狀 if 敘述

若if敘述裡面包含有其它的if敘述,稱為巢狀if敘述。

if condition1:
  if condition2
    Do A
  else:
    Do B
else:
  do C
raw-image

if / elif / else 敘述

當程式有多個條件要做判斷時,可使用if/elif/else敘述。

if condition1:
  do A
elif condition2:
  do B
......
else:
  do C
raw-image

例如,當我們要設計一個BMI (Body Mass Index)的計算程式時,必須判斷[1]:

  • 若BMI小於18.5時,體重過輕。
  • 若BMI大於或等於18.5、且BMI小於24時,體重正常。
  • 若BMI大於或等於24、且BMI小於28時,體重過重。
  • 若BMI大於或等於28時,則達到肥胖的程度。

此時除了必須運用if/elif/else語法外,還需引入關係運算子與邏輯運算子的觀念。

關係運算子

  • a > b:檢查a是否大於b
  • a >= b:檢查a是否大於或等於b
  • a < b:檢查a是否小於b
  • a <= b:檢查a是否小於或等於b
  • a == b:檢查a是否等於b
  • a != b:檢查a是否不等於b

舉例來說:

  • a > b
>>> print(2 > 1)
True
>>> print(1 > 2)
False
  • a >= b
>>> print(2 >= 2)
True
>>> print(1 >= 2)
False
  • a < b
>>> print(1 < 2)
True
>>> print(2 < 1)
False
  • a <= b
>>> print(2 <= 2)
True
>>> print(2 <= 1)
False
  • a == b
>>> print(2 == 2)
True
>>> print(2 == 1)
False
  • a != b
>>> print(2 != 1)
True
>>> print(2 != 2)
False

邏輯運算子

  • and運算子,例如:condition1 and condition2,兩條件必須同時成立為True,反之為False。
  • or運算子,例如:condition1 or condition2,兩條件必須有其中一個成立為True,反之為False。
  • not運算子,例如:not condition1,此條件不成立為True,反之為False。

舉例來說:

  • and
>>> print((1 < 2) and (2 < 3))
True
>>> print((1 < 2) and (3 < 2))
False
  • or
>>> print((1 < 2) or (3 < 2))
True
>>> print((2 < 1) or (3 < 2))
False
  • not
>>> print(not (1 > 2))
True
>>> print(not (1 < 2))
False

實作BMI計算機

綜合以上所學,這個程式會要求使用者輸入身高和體重,接著計算BMI,然後回傳它所計算的數值並判斷體重是否在正常範圍內。

# input your height and weight
height = input("Please input your height in centimeter:\n")
weight = input("Please input your weight in kilogram:\n")

# calculate BMI
bmi = int(weight) / ((int(height) / 100) ** 2)

# BMI interpretation
if bmi < 18.5:
  print(f"Your BMI is {bmi}, and you are underweight.")
elif bmi < 24:
  print(f"Your BMI is {bmi}, and you have a normal weight.")
elif bmi < 28:
  print(f"Your BMI is {bmi}, and you are overweight.")
else:
  print(f"Your BMI is {bmi}, and you are obese.")

以下是執行結果:

Please input your height in centimeter:
180
Please input your weight in kilogram:
75
Your BMI is 23.148148148148145, and you have a normal weight.

程式範例

https://github.com/wjweng/marathon_python/blob/master/Day1_to_25/marathon_python_day4.py

參考資料

[1] https://en.wikipedia.org/wiki/Body_mass_index

留言
avatar-img
留言分享你的想法!
avatar-img
Wei-Jie Weng的沙龍
50會員
36內容數
Wei-Jie Weng的沙龍的其他內容
2022/07/13
對於程式的初學者而言,理解程式的流程、迴圈的進行、或是變數的變化會需要一定程度將程式在腦中進行運算的能力,要一段時間熟悉與適應,尤其是當程式執行的結果不如預期時,往往是計算的過程和自己所想像的不同,這時又更難靠自己的能力找出錯誤。因此,這邊要介紹的這個工具可以將程式執行的過程逐行將變數的變化視覺化地
Thumbnail
2022/07/13
對於程式的初學者而言,理解程式的流程、迴圈的進行、或是變數的變化會需要一定程度將程式在腦中進行運算的能力,要一段時間熟悉與適應,尤其是當程式執行的結果不如預期時,往往是計算的過程和自己所想像的不同,這時又更難靠自己的能力找出錯誤。因此,這邊要介紹的這個工具可以將程式執行的過程逐行將變數的變化視覺化地
Thumbnail
2022/07/13
在上一節介紹了 JSON 資料的基本架構後,我們將改寫並擴充密碼產生器程式,讓它能夠藉由 JSON 的資料結構完成帳密搜尋的功能。
Thumbnail
2022/07/13
在上一節介紹了 JSON 資料的基本架構後,我們將改寫並擴充密碼產生器程式,讓它能夠藉由 JSON 的資料結構完成帳密搜尋的功能。
Thumbnail
2022/06/23
JSON的全名叫JavaScript Object Notation,是由Douglas Crockford所設計的一種資料格式,最初應用在JavaScript程式語言中,做為一種資料交換的格式,而後被廣泛運用在Web開發與NoSQL資料庫,現今已成為一種重要的資料格式。
Thumbnail
2022/06/23
JSON的全名叫JavaScript Object Notation,是由Douglas Crockford所設計的一種資料格式,最初應用在JavaScript程式語言中,做為一種資料交換的格式,而後被廣泛運用在Web開發與NoSQL資料庫,現今已成為一種重要的資料格式。
Thumbnail
看更多
你可能也想看
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
在這一章中,我們介紹了PHP中的流程控制語句,包括if、else if、else、三元運算子、switch語句、for迴圈、foreach迴圈、while迴圈、do-while迴圈、循環嵌套以及控制迴圈的語句如break、continue、goto和return。
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
此章節的目的是介紹Java程式語言中的流程控制結構,包括條件語句(if, else if, else)、三元運算子、switch語句,以及各種迴圈(for, foreach, while)。同時,也解釋了如何在迴圈中使用控制語句來改變程式的執行流程。每種主題都配有示例程式碼以幫助理解。
Thumbnail
本章節帶領讀者了解 Kotlin 的流程控制語法,包括條件判斷、當做三元運算子使用的 if 表達式、用來替代 switch 語句的 when 語句、用於迴圈運作的 for 和 while 語句,以及控制迴圈執行流程的語句和標籤概念。該章節目的在於讓讀者深入掌握流程控制功能,進一步提升編程技巧。
Thumbnail
本章節帶領讀者了解 Kotlin 的流程控制語法,包括條件判斷、當做三元運算子使用的 if 表達式、用來替代 switch 語句的 when 語句、用於迴圈運作的 for 和 while 語句,以及控制迴圈執行流程的語句和標籤概念。該章節目的在於讓讀者深入掌握流程控制功能,進一步提升編程技巧。
Thumbnail
本文介紹了Python中的流程控制,包括if, elif, else語句,三元運算子,for和while迴圈,以及控制迴圈語句如break、continue和pass。透過範例程式碼,說明了如何使用這些語句和結構進行條件判斷,迴圈遍歷和控制程式流程。
Thumbnail
本文介紹了Python中的流程控制,包括if, elif, else語句,三元運算子,for和while迴圈,以及控制迴圈語句如break、continue和pass。透過範例程式碼,說明了如何使用這些語句和結構進行條件判斷,迴圈遍歷和控制程式流程。
Thumbnail
在程式世界裡,if 條件句是我們的好朋友,幫我們做各種決策。如果不注意可能會讓我們掉進小陷阱。文中透過幾個例子,在使用 if 時可能會遇到的一些常見問題,像是不必要的 if、過於複雜的條件、忘了用嚴格比較,還有嵌套太深的 if。透過這篇文章,你將學到如何避免這些小錯誤,寫出更乾淨、更有效率的程式碼。
Thumbnail
在程式世界裡,if 條件句是我們的好朋友,幫我們做各種決策。如果不注意可能會讓我們掉進小陷阱。文中透過幾個例子,在使用 if 時可能會遇到的一些常見問題,像是不必要的 if、過於複雜的條件、忘了用嚴格比較,還有嵌套太深的 if。透過這篇文章,你將學到如何避免這些小錯誤,寫出更乾淨、更有效率的程式碼。
Thumbnail
在Unity和其他應用程式中,if-else是一定會使用上的陳述式,這篇文章主要面向對只了解if-else使用方式的程式員,補足在專有名詞上的知識並且提供省略程式碼區塊的小技巧與範例。
Thumbnail
在Unity和其他應用程式中,if-else是一定會使用上的陳述式,這篇文章主要面向對只了解if-else使用方式的程式員,補足在專有名詞上的知識並且提供省略程式碼區塊的小技巧與範例。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News