要在某條件成立時才進行某些動作,Python提供了if運算式,if可以搭配else,在if條件不成立時,執行else中定義的程式碼
範例如下 :
age=21 # 定義一個變數值為20
if age>=20 : # 判斷變數值是否大於20
print("can vote") # 若大於20印出can vote
else : # 變數值沒有大於20就執行else區塊
print("can't vote") # 進入else區塊後印出can't vote
上面程式碼第一行的部分先定義一個age變數值為21,接下來在第三行進入if陳述句,判斷如果age大於20的話就print("can vote"),如果age沒有大於20的話就進入第五行的else,然後print("can't vote")
輸出結果 :
can vote
範例如下 :
names=["bonny","jack","rose"] # 建立一個names串列
for name in names : # 告知python從names串列中取出名字,並將取出的名字存到name變數中
if name=="bonny" : # 判斷如果name等於bonny
print(name.upper()) #等於bonny就把bonny變全部大寫
else : # 如果name不等於bonny
print(name) #不等於bonny就直接把name印出
輸出結果 :
BONNY
jack
rose
為甚麼比對是否相等時要用兩個等於呢?如果是一個等於的話,python會把name="bonny"解讀成將name變數指定成bonny,如果是兩個等於的話,python會把name=="bonny"解讀成name變數的值等於bonny嗎?
用and關鍵字把每個條件連起來,如果每個條件都是True的話整條條件式就為True,但只要有一個條件沒通過,整個條件式就會是False
用or關鍵字把每個條件連起來,它和and不同的是,or只要一個條件是True就可以讓整個條件式為True,or關鍵字只會在全部的條件是False的時候,才會讓整個條件式是False
範例如下 :
a = 5
b = 6
c = 4
if a>c and b>a : # a>c和b>a都是正確敘述,所以會跳到下一行印出句子
print("Both conditions are True")
if a>c or b<a : # a>c是正確敘述,b<a是錯誤敘述,但因為or只要其中一個條件正確就可以通過,所以會跳到下一行印出句子
print("At least one of the conditions are True")
輸出結果 :
Both conditions are True
At least one of the conditions are True
這個部分是要來講解if陳述句其實不只有if-else這種寫法,當我們需要檢測超過兩種以上的條件時,我們可以用到if-elif-else,python只會執行if-elif-else路徑中的一個程式區塊,它會依序檢測每個條件,直到碰到符合條件的檢測,在通過檢測後,python才會執行緊接在後面的程式區塊,並跳過其他剩下的檢測
譬如說去百貨公司買東西時,有金卡、銀卡和一般卡的會員我們會給予不同的折扣,這時我們就可以用if-elif-else來寫
範例如下 :
card="gold" # 定義card變數是gold
if card=="gold" :
print("30% off") # 如果card等於gold印出打7折
elif card=="silver" :
print("20% off") # 如果card等於silver印出打8折
else :
print("10% off") # 如果不是gold也不是silver則印出打9折
輸出結果 :
30% off
我們也可以用多個elif程式區塊,範例如下 :
score=87
if score==100 :
print("A+") # score等於100印出A+
elif 90<=score<100 :
print("A") # score介於90~99印出A
elif 80<=score<90 :
print("B") # score介於80~89印出B
elif 70<=score<80 :
print("C") # score介於70~79印出C
elif 60<=score<70 :
print("D") # score介於60~69印出D
else :
print("F") # score不在以上範圍內印出F
輸出結果 :
B
HackMD網址 : https://hackmd.io/hs4dY0H3Tby6rgRR8jKYqw?both
資料來源:<<python程式設計的樂趣>>-Eric Matthes著/H&C譯