返回文章列表

Python條件判斷與迴圈控制

本文探討 Python 的條件判斷與迴圈控制語法,包含 if、elif、else、while 和 for 迴圈,並搭配實際程式碼範例說明,涵蓋巢狀迴圈、break 和 continue 等進階用法,以及條件表示式的簡潔應用,最後以小型專案示範如何結合這些語法解決實際問題。

程式設計 Python

Python 的條件判斷與迴圈控制是程式流程的根本,讓程式得以根據不同情況執行不同程式碼區塊。ifelifelse 構成條件判斷結構,允許根據布林表示式的真假值執行對應程式碼。while 迴圈則在條件為真時重複執行區塊,for 迴圈則迭代序列元素,搭配 range() 函式更能精準控制迭代次數。巢狀迴圈處理多層次邏輯,breakcontinue 則提供更精細的迴圈控制,例如提前結束或跳過特定迭代。條件表示式提供簡潔的單行條件指定,提升程式碼可讀性。這些語法相互結合,能建構複雜的程式邏輯,實作各種功能。

條件判斷敘述(Decision Statements)

在 Python 程式設計中,條件判斷敘述是用來控制程式流程的重要語法。這些敘述允許程式根據特定的條件執行不同的程式碼區塊。本章節將探討 Python 中的 ifelifelse 陳述式,以及它們在實際程式設計中的應用。

4.7.1 簡單的 if 陳述式

簡單的 if 陳述式用於檢查一個條件是否為真。如果條件為真,則執行相關的程式碼區塊。其基本語法如下:

if 布林表示式:
    陳述式

程式範例 4.5:檢查數字是否為正數

num = int(input("請輸入一個數字:"))
if num > 0:
    print(num, "是一個正數")

4.7.2 if-else 陳述式

if-else 陳述式允許在條件不成立時執行另一段程式碼。其語法結構如下:

if 布林表示式:
    陳述式1
else:
    陳述式2

程式範例 4.6:檢查數字是正數還是負數

num = int(input("請輸入一個數字:"))
if num >= 0:
    print(num, "是一個非負數")
else:
    print(num, "是一個負數")

4.7.3 巢狀 if 陳述式

巢狀 if 陳述式是指在一個 ifelse 區塊內再使用 if 陳述式。這種結構可以用來檢查多個條件。其語法結構如下:

if 布林表示式1:
    if 布林表示式2:
        陳述式1
    else:
        陳述式2
else:
    陳述式3

程式範例 4.7:比較三個數字的大小

num1 = int(input("請輸入第一個數字:"))
num2 = int(input("請輸入第二個數字:"))
num3 = int(input("請輸入第三個數字:"))
if num1 > num2:
    if num1 > num3:
        print(num1, "是最大的數字")
    else:
        print(num3, "是最大的數字")
else:
    if num2 > num3:
        print(num2, "是最大的數字")
    else:
        print(num3, "是最大的數字")

#### 內容解密:

  • 首先,程式讀取三個整數輸入。
  • 第一層 if 陳述式檢查 num1 是否大於 num2
  • 如果成立,則進入第二層 if 陳述式檢查 num1 是否大於 num3,並根據結果輸出最大數字。
  • 如果第一層條件不成立,則比較 num2num3 以確定最大數字。

4.7.4 多重 if-elif-else 陳述式

多重 if-elif-else 陳述式用於檢查多個條件,直到找到第一個成立的條件並執行相關程式碼。其語法如下:

if 布林表示式1:
    陳述式1
elif 布林表示式2:
    陳述式2
else:
    陳述式N

程式範例 4.8:根據百分比輸出成績等級

subject1 = float(input("請輸入資料結構成績:"))
subject2 = float(input("請輸入 Python 成績:"))
subject3 = float(input("請輸入 Java 成績:"))
subject4 = float(input("請輸入 C 程式設計成績:"))
subject5 = float(input("請輸入 HTML 成績:"))
total = subject1 + subject2 + subject3 + subject4 + subject5
percentage = total / 5
print("總分:", total, " 百分比:", percentage)
if percentage >= 90:
    print("等級:優異")
elif percentage >= 80:
    print("等級:一級")
elif percentage >= 70:
    print("等級:二級")
elif percentage >= 60:
    print("等級:合格")
else:
    print("等級:不合格")

#### 內容解密:

  • 程式首先讀取五門科目的成績並計算總分和百分比。
  • 使用多重 if-elif-else 結構根據百分比輸出相應的成績等級。
  • 每個 elif 分支檢查不同的百分比範圍,直到找到符合的條件。

4.8 條件表示式

Python 中的條件表示式提供了一種簡潔的方式來進行簡單的條件判斷。其語法如下:

值1 if 條件 else 值2

程式範例:簡單的條件表示式

x = int(input("請輸入一個數字:"))
result = "偶數" if x % 2 == 0 else "奇數"
print(x, "是", result)

#### 內容解密:

  • 程式讀取一個整數輸入並檢查其是否為偶數。
  • 使用條件表示式根據檢查結果賦予 result 對應的字串值。
  • 輸出結果表明該數字是偶數還是奇數。

條件表示式與決策陳述式在Python中的應用

Python是一種功能強大的程式語言,它提供了多種控制結構來幫助開發者根據不同的條件執行不同的程式碼路徑。在本篇文章中,我們將探討Python中的條件表示式和決策陳述式,包括ifif-elseif-elif-else等陳述式,以及如何使用條件表示式來簡化程式碼。

條件表示式

條件表示式是Python中用於根據條件傳回不同值的簡潔語法。它的一般形式為:

值1 if 條件 else 值2

當條件為真時,表示式傳回值1;否則,傳回值2。例如:

x = x*x if x % 2 == 0 else x*x*x

這行程式碼根據x是否為偶數來決定將x的平方還是立方指定給x

內容解密:

  1. x % 2 == 0:檢查x是否能被2整除,即判斷x是否為偶數。
  2. x*x:如果x是偶數,則計算其平方。
  3. x*x*x:如果x是奇數,則計算其立方。
  4. 整個表示式將計算結果指定給x

決策陳述式

Python中的決策陳述式允許程式根據不同的條件執行不同的程式碼塊。主要的決策陳述式包括ifif-elseif-elif-else

if陳述式

if 條件:
    # 當條件為真時執行的程式碼

if-else陳述式

if 條件:
    # 當條件為真時執行的程式碼
else:
    # 當條件為假時執行的程式碼

if-elif-else陳述式

if 條件1:
    # 當條件1為真時執行的程式碼
elif 條件2:
    # 當條件1為假且條件2為真時執行的程式碼
else:
    # 當所有條件都為假時執行的程式碼

例項:找出兩個數字中較小的那一個

使用if-else陳述式

num1 = int(input('輸入第一個數字:'))
num2 = int(input('輸入第二個數字:'))
if num1 < num2:
    min_num = num1
else:
    min_num = num2
print('較小的數字是:', min_num)

使用條件表示式

num1 = int(input('輸入第一個數字:'))
num2 = int(input('輸入第二個數字:'))
min_num = num1 if num1 < num2 else num2
print('較小的數字是:', min_num)

小型專案:計算某個月有多少天

這個專案要求使用者輸入月份和年份(如果是二月),然後根據是否是閏年來決定二月的天數。其他月份的天數根據固定的規則來決定。

程式碼範例

print('本程式將計算指定月份的天數')
month = int(input('請輸入月份(1-12):'))
if month == 2:
    year = int(input('請輸入年份:'))
    num_days = 29 if (year % 4 == 0 and not(year % 100 == 0)) or (year % 400 == 0) else 28
elif month in (1, 3, 5, 7, 8, 10, 12):
    num_days = 31
elif month in (4, 6, 9, 11):
    num_days = 30
else:
    print('無效的月份')
    num_days = None

if num_days is not None:
    print(f'{month}月有{num_days}天')

內容解密:

  1. month == 2:檢查輸入的月份是否是二月。
  2. (year % 4 == 0 and not(year % 100 == 0)) or (year % 400 == 0):判斷年份是否是閏年。
  3. num_days = 29 if 是閏年 else 28:根據是否是閏年決定二月的天數。
  4. 其他月份的天數根據月份的不同而固定。

迴圈控制敘述:深入解析與實務應用

在程式設計中,迴圈控制敘述(Loop Control Statements)扮演著至關重要的角色。透過使用迴圈,我們可以重複執行一系列的指令,直到滿足特定的條件為止。本章節將探討Python中的迴圈控制敘述,包括while迴圈、for迴圈、巢狀迴圈,以及breakcontinue敘述。

5.1 簡介

在日常生活中,我們經常需要重複執行某些任務。透過使用迴圈控制敘述,我們可以輕鬆地在Python程式中實作這些任務。例如,教師可以使用簡單的電腦程式來教授多個班級的乘法表,從而避免重複勞動。

5.2 while 迴圈

while迴圈是一種基本的迴圈控制敘述,它會持續執行一段程式碼,直到指定的條件不再滿足為止。其基本語法如下:

while 條件:
    # 執行程式碼

範例:使用while迴圈計算1到10的總和

i = 1
sum = 0
while i <= 10:
    sum += i
    i += 1
print("1到10的總和為:", sum)

內容解密:

  1. 初始化變數i為1,sum為0。
  2. while迴圈條件為i <= 10,當i大於10時,迴圈終止。
  3. 在迴圈內,將i的值加到sum上,並將i遞增1。
  4. 迴圈結束後,輸出1到10的總和。

5.3 range() 函式

range()函式用於產生一個整數序列,常與for迴圈搭配使用。其基本語法如下:

range(start, stop, step)
  • start:起始值(包含)。
  • stop:終止值(不包含)。
  • step:步長,預設為1。

範例:使用range()函式產生1到10的整數序列

for i in range(1, 11):
    print(i)

內容解密:

  1. range(1, 11)產生從1到10的整數序列。
  2. for迴圈遍歷該序列,並輸出每個整數。

5.4 for 迴圈

for迴圈用於遍歷序列(如列表、元組或字串)中的每個元素。其基本語法如下:

for 變數 in 序列:
    # 執行程式碼

範例:使用for迴圈遍歷列表

fruits = ["蘋果", "香蕉", "橙子"]
for fruit in fruits:
    print(fruit)

內容解密:

  1. 定義一個包含水果名稱的列表fruits
  2. for迴圈遍歷該列表,並將每個元素指定給變數fruit
  3. 輸出每個水果的名稱。

5.5 巢狀迴圈

巢狀迴圈是指在一個迴圈內部再巢狀另一個迴圈。巢狀迴圈常用於處理二維資料或實作複雜的邏輯。

範例:使用巢狀迴圈列印九九乘法表

for i in range(1, 10):
    for j in range(1, i + 1):
        print(f"{j} x {i} = {i * j}", end="\t")
    print()

內容解密:

  1. 外層for迴圈控制行數,從1到9。
  2. 內層for迴圈控制每行的輸出,從1到當前行數。
  3. 使用print()函式輸出乘法表,並在每行結束時換行。

5.6 break 敘述

break敘述用於立即終止當前所在的迴圈。

範例:使用break敘述在找到特定元素時終止迴圈

numbers = [1, 2, 3, 4, 5]
for num in numbers:
    if num == 3:
        break
    print(num)

內容解密:

  1. 定義一個整數列表numbers
  2. for迴圈遍歷該列表。
  3. 當遇到元素3時,執行break敘述,終止迴圈。
  4. 因此,只輸出1和2。

5.7 continue 敘述

continue敘述用於跳過當前迭代,直接進入下一次迭代。

範例:使用continue敘述跳過奇數

numbers = [1, 2, 3, 4, 5]
for num in numbers:
    if num % 2 != 0:
        continue
    print(num)

內容解密:

  1. 定義一個整數列表numbers
  2. for迴圈遍歷該列表。
  3. 當遇到奇數時,執行continue敘述,跳過當前迭代。
  4. 因此,只輸出偶數2和4。

Python 中的迴圈控制陳述

在程式設計中,控制陳述是控制程式執行流程的重要工具。假設程式設計師想要在螢幕上顯示「I Love Python」這句話 50 次,如果不使用迴圈控制陳述,將會是非常繁瑣的工作。Python 提供了兩種主要的迴圈控制陳述:while 迴圈和 for 迴圈。本文將重點介紹 while 迴圈的使用方法。

while 迴圈

while 迴圈是一種條件控制迴圈,只要條件為真,就會重複執行迴圈內的陳述。其基本語法如下:

while 測試條件:
    # 迴圈主體
    陳述式

while 迴圈的細節

  • while 是 Python 的保留關鍵字,用於開始 while 陳述。
  • 測試條件是一個布林表示式,後面必須跟著冒號(:)。
  • 當測試條件為真時,迴圈內的陳述式會被執行。
  • 當測試條件為假時,迴圈結束,程式會跳出迴圈繼續執行。

while 迴圈的流程圖

此圖示展示了 while 迴圈的執行流程:

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

title Python條件判斷與迴圈控制

package "Python 應用架構" {
    package "應用層" {
        component [主程式] as main
        component [模組/套件] as modules
        component [設定檔] as config
    }

    package "框架層" {
        component [Web 框架] as web
        component [ORM] as orm
        component [非同步處理] as async
    }

    package "資料層" {
        database [資料庫] as db
        component [快取] as cache
        component [檔案系統] as fs
    }
}

main --> modules : 匯入模組
main --> config : 載入設定
modules --> web : HTTP 處理
web --> orm : 資料操作
orm --> db : 持久化
web --> cache : 快取查詢
web --> async : 背景任務
async --> fs : 檔案處理

note right of web
  Flask / FastAPI / Django
end note

@enduml

程式範例 5.1:使用 while 迴圈印出 1 到 5 的數字

count = 0  # 初始化計數器
while count <= 5:  # 測試條件
    print("Count =", count)  # 列印 count 的值
    count = count + 1  # 將 count 的值加 1

輸出結果:

Count = 0
Count = 1
Count = 2
Count = 3
Count = 4
Count = 5

#### 內容解密:

  1. 初始化 count 為 0。
  2. while 迴圈檢查 count 是否小於或等於 5。
  3. 如果條件為真,則執行迴圈內的陳述:列印 count 的值並將 count 加 1。
  4. 重複步驟 2 和 3,直到 count 大於 5。
  5. count 為 6 時,條件為假,迴圈結束。

使用 while 迴圈的注意事項

撰寫 while 迴圈時需要注意:

  • 所有在 while 區塊內的陳述式必須以相同的空格數縮排。
  • 如果迴圈內的陳述式沒有正確縮排,可能會導致無窮迴圈。

程式範例 5.2:使用 while 迴圈計算前 10 個數字的總和

count = 0  # 初始化計數器
sum = 0    # 初始化總和為零
while count <= 10:  # 測試條件
    sum = sum + count  # 將 count 加到 sum 上
    count = count + 1   # 將 count 加 1
print("前 10 個數字的總和 =", sum)  # 列印總和

輸出結果:

前 10 個數字的總和 = 55

#### 內容解密:

  1. 初始化 countsum 為 0。
  2. 使用 while 迴圈,當 count 小於或等於 10 時,將 count 加到 sum 上,並將 count 加 1。
  3. count 超過 10 時,列印出 sum 的值。