本篇將程式初學者所需的內容預設為顯示,若需切換請點這裡

程式可以如此靈活的原因之一,就是能依據不同的條件,來進行不同的工作。要進行判斷,可以使用 if...else 的語法,如下:

if 條件運算式:
	程式敘述一 # 當然也可以是很多筆敘述
else:
	程式敘述二

當條件成立時,將執行敘述一,否則會執行敘述二。如果不需要敘述二,則可省略 else 以下的部分。此外,在一行的開頭加入空白使程式往右靠,這種排版方式稱為縮排,縮排在 Python 當中是必須的。Python 的習慣上是使用四個空白作為縮排,本範例亦如此使用(但因編輯器的緣故,如果你看的是網頁原始碼,則是使用 Tab 縮排),Python 內建的 IDLE 環境也會使用空白縮排。如果沒有團隊合作,或者程式碼必須讓別人閱讀等特殊必要,你也可以依照喜好選擇空白的數量或者改用 Tab 來進行縮排,但請留意,這些方式應避免混用,否則可能導致程式無法執行或難以除錯(若有興趣知道混用的後果,請自行嘗試或上網查詢)。

以成績及格與否的判斷做為一個簡單的範例,其邏輯上為「60分以上及格,否則被當」。寫成程式碼時的範例如下:

grade = int(input('Please enter grade: ')) # 接受使用者輸入一個整數
if grade >= 60:
	print('Pass')
else:
	print('GG')

上例中的「>=」,稱之為條件運算子,可以用來判斷左邊的運算結果,是否大於等於右邊的運算結果。其餘的條件運算子有:

使用範例如下:

a = 10
if a > 5:
	print("a > 5")

b = 7
if b % 2 != 0:
	print("b is odd")

a = 2
b = 3
if a > 0 and b > 0:
	print("a and b are both positive")

a = 20
b = 90
if a > 60 or b > 70:
	print("a or b passed")

或和且的混用:

a = 10
b = 20
c = 30
'''
下列條件符合其一時執行
1. a 比 5 大,而且 b 比 10 大
2. c 比 15 大
'''
if a > 5 and b > 10 or c > 15:
	print("Test 1: OK")

a = 15
b = 20
c = 3
'''
下列條件都要符合時執行
1. a 比 5 大,或者 b 比 10 大
2. c 比 15 大
'''
if (a > 5 or b > 10) and c > 15:
	print("Test 2: match")
else:
	print("Test 2: GG")

「或」就像加法,「且」就像乘法,它們也遵守先乘除後加減的規則。我們把前面範例最後一段的括號拿掉看看,就會產生跟前面範例不同的結果:

a = 15
b = 20
c = 3
'''
下列條件都要符合時執行
1. a 比 5 大,或者 b 比 10 大
2. c 比 15 大
'''
if a > 5 or b > 10 and c > 15:
	print("Test 2: match")
else:
	print("Test 2: GG")

在數學式子中,我們會寫"a > b > c",這是大家很熟悉的遞移律。在其他某些語言當中,直接寫"a > b > c"作為判斷式是會有問題的,但是在 Python 當中,可以直接使用遞移律來撰寫判斷式:

a = 3
b = 2
c = 1
	
if a > b > c:
	print("Match\n")
else:
	print("Ha ha ha UCCU\n")

如果要進行的條件判斷或動作比較簡單,可以用以下的方法縮成一行:

grade = 70
a = 1
b = 2

# 例如第一個範例,可以簡化成這樣
print('Pass') if grade >= 60 else print('GG')

# 也可以這樣用
c = (a + b) if a > b else (a - b)

Question: 如何把前述範例的最後一行,還原成多行的形式?

如果要進行多的關卡的條件判斷,可以使用「elif」,範例如下:

grade = 65

if grade >= 90:
	print('A+')
elif grade >= 80:
	print('A- or A')
elif grade >= 70:
	print('B-, B or B+')
elif grade >= 60:
	print('C-, C or C+')
else:
	print('GG')

Question: 在前述範例中,如果把幾個 elif 區塊的順序調換,會發生什麼事?為什麼?

進行程式設計時,可以依照自己的流程需求,使用合適的條件判斷方式,例如閏年的判斷, 其規則為逢 4 的倍數閏、100 的倍數不閏、400 的倍數閏,程式碼可以寫成以下的樣子:

year = 2018

if year % 400 == 0:
	print("Leap")
elif year % 100 == 0:
	print("Common")
elif year % 4 == 0:
	print("Leap")
else:
	print("Common")

條件判斷也可以一層包一層,稱為巢狀。例如把第一個範例中,80 分以上的加一個特別鼓勵:

grade = 65

if grade >= 60:
	print('Pass')
	if grade >= 80:
		print('Good')
else:
	print('GG')