python if條件判斷語句
if的基本格式
if語句用來做判斷,並選擇要執行的語句分支。基本格式如下:
if CONDITION1:
code_block(1)
elif CONDITION2:
code_block(2)
elif CONDITION3:
...
...
else:
code_block_else
其中elif是可選的,可以有任意多個,else是可選的,表示全都不滿足條件時該執行的分支。
例如:
a = 4
if a > 3:
print("hello world")
條件表示式Condition部分以運算結果的True、False為if的分支執行依據。在Python中所有資料物件要麼是True,要麼是False,所以任何一個數據、表示式都可以作為if的Condition
if 1:
...
if a > b:
...
if 'a':
...
if []:
...
if [[]]:
...
if a and b:
...
至於如何判斷True、False,參見布林值和邏輯運算。
switch/case的替代方案
在python中並沒有switch和case的分支選擇語句,但是使用if或dict也能輕鬆實現。
例如,使用dict實現等值的分支選擇:
D = { "apple": 8.0, "pear": 3.5, "orange": 2.5, "banana": 2.5 } fruit = "banana" print(D[fruit])
上面沒有提供default情況時的分支,但使用get()可以設定dict中找不到key時預設返回的值。例如:
print(D.get("greens","no this fruit"))
還可以通過in的成員測試來設定分支:
if fruit in D:
print(D[fruit])
else:
print("no this fruit")
dict只能做等值比較的分支選擇,要提供非等值的分支比較,只能用if語句。
例如:
score = 77 if score >= 90: print("優秀") elif 70 <= score < 90: print("良好") elif 60 <= score < 70: print("及格") else: print("不及格")
使用if的好處是通俗易懂,使用dict的好處是將資料儲存到資料結構中,而儲存到資料結構中的資料可以是很複雜的。比如,將函式作為dict的value。
if/else三元表示式
即所謂的三目運算,只不過python中不支援x ? y : z
的方式,而是使用if的另一種表示式語法。
對於if x: xxx; else yyy
這樣的兩分支語句,可以使用更精簡的表示式方式來描述:
xxx if x else yyy
雖然看上去和原始的沒什麼區別,但很多時候要方便的多。例如賦值:
if x:
a = y
else:
a = z
等價的三元if寫法:
a = y if x else z
注意,上面"="表示這整行是一個賦值語句,右邊的是評估物件,評估之後賦值給a,也就是等價於a = (y if x else z)
,而不是等價於(a = y) if x else z
。
else不能缺少,否則不是三元運算。另外,if的分支程式碼體y和z都必須只能是單條語句,不能是多語句。也就是說,不能轉換下面的程式碼格式為三元表示式。
if x:
statement1
statement2
else:
statement3
statement4
實際上,三元運算也能使用and / or來實現,還能使用序列 + bool()
來實現。
例如:
a = ((x and y) or z)
一般比較少用and/or來實現分支,因為可讀性不好,而且並不總是能和if等價。但有一種情況使用and/or非常方便:從多個值中選擇一個真值。例如:
a = x or y or z or None
下面是使用序列 + bool()
的方式實現的三元運算操作,思路是bool(CONDITION)
作為序列的索引。
a = [y, z][bool(x)]
還是那句話,python中基本總是首選簡單的、通俗易懂的方式。所以,用if吧。