1. 程式人生 > >python if條件判斷語句

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吧。