if 陳述句


要在某條件成立時才進行某些動作,Python提供了if運算式,一個例子如下:
import sys
filename = 'default.properties'
if len(sys.argv) != 1:
filename = sys.argv[1]
print(filename)

這 個範例中,預設的檔案名稱是default.properties,如果使用者有提供命令列引數,則sys.argv的長度就會大於1(記得索引0是模組檔案名稱),所 以len(sys.argv) != 1的結果是True,所以if條件成立,將filename設定為使用者所提供的命令列引數。

if可以搭配else,在if條件不成立時,執行else中定義的程式碼,所以上例也可以這麼寫:
import sys
filename = ''
if len(sys.argv) == 1:
filename = 'default.properties'
else:
filename = sys.argv[1]
print(filename)

在Python中,區塊是從:開始,同屬一個區塊的程式碼,必須有相同的縮排(例如四個空白或一個Tab鍵)。這可以避免C/C++、Java中的某些不明確的狀況。例如:
if(....)
    if(...)
         doSometing();
else
    doOther();

乍看之下,else似乎是與第一個if配對,但實際上,else是與最近的if配對,也就是第二個if。但在Python中沒有這個問題:
if ...:
    if ...:
         dosomething()
else:
    doother()

Python以縮排作為區塊依據,以上例而言,else是與第一個if配對,如果是下例,則else是與第二個if配對:
if ...:
    if ...:
         dosomething()
        else:
        doother()

如果有多重判斷,則可以使用if..elif..else結構。例如:
score = int(input('輸入分數:'))
if score >= 90:
print('得 A')
elif score >= 80 and score < 90:
print('得 B')
elif score >= 70 and score < 80:
print('得 C')
elif score >= 60 and score < 70:
print('得 D')
else:
print('不及格')

在Python中有個if..else運算式語法,可以讓你擁有像C/C++、Java的?:三元運算子功能。例如:
import sys
filename = 'default.properties' if len(sys.argv) == 1 else sys.argv[1]
print(filename)

上例中,如果if的判斷為真,則傳回'default.properties',否則傳回sys.argv[1]的值。
以下是個簡單的判斷輸入數是奇數或偶數的程式:
input = int(input('輸入整數:'))
print('{0} 為 {1}'.format(input, '奇數' if input % 2 else '偶數'))