Python 教程 - 決策構造
在本節中,你將學習 Python 程式設計中的決策構造。最常用的決策構造是 if…else
構造。
if…else
宣告
當你有兩個語句塊並且你只想根據某些條件執行一個語句塊時,將使用 if…else
語句。在 Python 程式設計中,大多數 if…elif…else
都用作決策構造。
if
宣告
在 if
宣告中,你只有一個語句塊,並且僅當條件為 True
時才執行此塊,當條件為 False
時,將忽略該語句塊。
以下是 Python 中 if
宣告的語法:
if condition:
statement(s)
Python 中的 if
語句主體不是用大括號括起來,而是使用縮排。主體的末端由第一條不在同一個縮排水平的行來決定。
if
宣告示例
考慮以下 if
使用語句的示例:
a = 24
if a % 2 == 0:
print(a, "is an even number")
b = 23
if b % 2 == 0:
print(b, "is an odd number")
24 is an even number
在此程式碼中,首先為變數 a
分配一個值,然後評估語句中的 if
條件。它通過 % 2
來檢查 a
是否為偶數,也就是是否 a % 2
為零,然後控制是否列印出相應的語句。
然後 b
分配一個奇數 23
。if
語句中的條件不是 True
,因此 print(b, "is an odd number")
將不會執行。
if...else
宣告
以下是 if...else
語句的語法:
if condition:
block of statements
else:
block of statements
在 if...else
中,如果 if
條件為 True
,則執行相應的語句塊,否則將執行 else
下的語句塊。
if...else
宣告示例
考慮下面 if...else
的程式碼:
a = 44
if a%2==0:
print(a, "is an even number")
else:
print(a, "is an odd number")
44 is an even number
如果 a
是偶數,它將列印 a is an even number
,否則將列印 a is an odd number
。
注意
if
和 else
塊不能同時執行或忽略。根據條件是否執行僅執行一個程式段 True
。
if...elif...else
宣告
以下是 if...elif...else
語句的語法:
if condition:
block of statements
elif condition:
block of statements
else:
block of statements
elif
代表 else if
它可以在此 if..elif..else
構造中多次使用。
當 if
條件為 False
時,將檢查 elif
條件等等。當所有的 if
條件和 elif
條件是 False
時,else
部分將被執行。
注意
if...elif...else
僅能執行一個程式段。
if...elif...else
宣告示例
考慮下面的程式碼,其中我們使用了用於檢查多個條件的 if...elif...else
語句:
a = -34
if a > 0:
print("Number is Positive")
elif a < 0:
print("Number is Negative")
else:
print("Number is zero")
Number is Negative
巢狀 if
語句
在 Python 中,你可以在 if
內部包含另一個 if
語句,這被稱為巢狀 if
語句。
你可以巢狀任何型別的 if
語句任意多次。但是在程式設計語言中使用巢狀 if
結構並不是一個好習慣,因為程式的可讀性會因此而變差。
巢狀 if
語句示例
在以下程式碼中,巢狀 if
結構用於查詢最大數量:
T = 52
if T > 25:
if T < 50:
print("Temperature is higher than 25 but lower than 50")
else:
print("Temperature is higher than 50")
else:
if T < 0:
print("Temperature is lower than 0")
else:
print("Temperature is higher than 0 but lower than 25")
Temperature is higher than 50
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn