python if條件判斷語句

if的基本格式

if語句用來作判斷,並選擇要執行的語句分支。基本格式以下:html

if CONDITION1:
    code_block(1)
elif CONDITION2:
    code_block(2)
elif CONDITION3:
    ...
...
else:
    code_block_else

其中elif是可選的,能夠有任意多個,else是可選的,表示全都不知足條件時該執行的分支。
例如:python

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,參見布爾值和邏輯運算app

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時默認返回的值。例如:ui

print(D.get("greens","no this fruit"))

還能夠經過in的成員測試來設置分支:this

if fruit in D:
    print(D[fruit])
else:
    print("no this fruit")

dict只能作等值比較的分支選擇,要提供非等值的分支比較,只能用if語句。code

例如:htm

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

相關文章
相關標籤/搜索