廣告
| if判斷句 |
|
|
|
| 作者是 Victor | |||||||||||||||||||||||
| 週三, 11 二月 2009 21:09 | |||||||||||||||||||||||
程式的判斷為了讓程式能夠在執行時有不同的選擇,因此程式語言通常都有判斷句的語法,讓程式在執行時可以依照給的條件不一樣,來決定到底要做哪件事情,如果用我們上次的程式執行的例子來看,判斷句以人類的語言來看就像這種句子:
對於今天下雨到底要不要帶傘,就是一種判斷句,由條件來決定要做什麼事情,就是這麼簡單而已。接下來我們就來介紹Python的判斷句。 if判斷句if在英文裡的意思是"如果",所以其實可以很直覺的就直接想成中文裡的"如果",Python的判斷句長得像這樣 if 條件:
成立的話要做的事情
它是由if開頭,隔一個以上的空白,然後接條件,再接一個冒號,然後斷行後要有固定的縮排,把要做的事情的區塊擠出來 把它想成中文就變成,如果條件成立的話,就做要做的事情,就是這麼簡單, 縮排與程式區塊大括號呢? end if呢? 你可能覺得很奇怪,如果你有學過其它語言的話,你會發現他們的if判斷句可能這這樣子: if 條件 then
要做的事情
end if
以上這個是VB的語法 if(條件) {
要做的事
}
以上是C語言的語法 但是Python沒有end if或end還有大括號這種東西,它是靠什麼來知道你要做的事情是哪些? 答案就是靠縮排,這是少數靠縮排來區分"區塊"的語法,這麼做有個好處就是強迫你要縮排,程式才容易看得懂,對於已經學過其它語言的人可能會不太習慣,至於什麼是縮排,我們來介紹一下。 所謂的縮排,就是指用一定數量的空白,將程式碼往右擠,形成整齊的巢狀結構,此一來很容易看得懂程式碼,但是在Python縮排被拿來當程判斷區塊的規則,所以你在Python不得不縮排。 以下範例示範如何縮排 # -*- coding: utf-8 -*-
# 如果1+1等於2的話
if 1+1 == 2:
print u"如你所見,1+1等於2"
print u"在同一縮排裡"
print u"都被視為同樣的區塊"
print u"也就是條件成立時會執行的程式碼區塊"
a = 10
# Python沒有規定要縮排幾個空白
# 但是一個區塊裡的縮排
# 空白個數都要一樣
# 以下用2個空白做縮排
if a == 10:
print u"a等於10"
print u"在區塊裡都要一樣的縮排長度"
# 如果在區塊裡還有區塊
# 一樣是往右再加縮排
if a % 2 == 0:
print u"a是2的倍數"
print u"這一行一樣是同一個區塊"
如你範例所示,Python用縮排來區分程式的區塊,雖然Python沒有規定縮排要幾個空白,但是最好一整個檔案裡的縮排都用一定的個數,避免突然用4個,另一個地方用2個,這樣會造成混亂,這個範例是為了示範錯誤的方式所以才這樣做,否則一般都是照這樣的慣例來做。 邏輯運算有了判斷句之後,還有一個重要的地方,就是條件,我們該怎樣表示我們想要判斷的條件?
這時候就用上邏輯運算了,邏輯運算有好幾種,像我們剛剛在上面例子裡看到的"=="就是邏輯運算式的一種,它是用來判斷左右兩邊相不相等用的,請誤與變數的指派,也就是一個等號"="搞混了,一個等號是指把右邊的東西指定給左邊,而兩個等號是判斷左右是否相等,
學過其它語言的人可能知道,有時可能會把兩個等號誤植為一個等號,程式不會錯誤但是跑出來的結果不對,在Python裡不允許你將一個等號放在條件判斷式裡面,因此就不會出現這種錯誤。
所謂的真就是指成立的意思,假也就是不成立的意思,如果你有學過離散數學或邏輯等等,這會顯得非常簡單,而Python裡面有兩個字用來表示真和假,分別為True和False,要注意的是大小寫都要一樣。 # -*- coding: utf-8 -*-
# 我們想判斷10是否為2和5的倍數
if 10 % 2 == 0 and 10 % 5 == 0:
print u"10是2和5的倍數"
# 我們想判斷10是否不是2和5的倍數
if not 10 % 2 == 0 and 10 % 5 == 0:
# 因為上面的式子不會成立,所以這行不會被執行
print u"10不是2和5的倍數"
a = 10
b = 20
# 我們想判斷a是否小於b
if a < b:
print u"a小於b"
else語法有時候,我們除了會講,"如果怎樣怎樣",有時候我們也會反過來想,"那沒有的話怎麼辦?",在程式語言裡就是else,上面的例子來看,我們判斷10是否為2和 5的倍數,同時判斷10是否不是2和5的倍數,這樣寫不是很麻煩嗎?因為如果10是2和5的倍數這句話不成立,就等於是下面那句話10不是2和5的倍數成立了,我們只要這樣想"如果 10是2和5的倍數的話,就.....否則就...",else就是這句話裡面的否則,不成立時程式就會跳到else的區塊裡去執行,現在讓我們改寫一下上面的範例: # -*- coding: utf-8 -*-
# 我們想判斷10是否為2和5的倍數
if 10 % 2 == 0 and 10 % 2 == 0:
print u"10是2和5的倍數"
else:
# 因為上面那句成立了,所以這句不會被執行
print u"10不是2和5的倍數"
a = 10
b = 20
# 我們想判斷a是否大於b
if a > b:
print u"a大於b"
# else 可以被想成中文裡的"否則"
else:
# 上面不成立,因此會執行這個區塊
print u"a小於或等於b"
elif語法有些時候,我們會針對一件事情想很多對策,如果前面的不行,那就換下一條,這樣一直下去,elif在程式語言裡就是這樣的角色,在其它語言裡通常是 else if,在Python被縮寫成elif 如果 下雨 就帶雨傘 不然如果 下雪 就帶雪衣 再不然,如果出太陽 就戴太陽眼鏡 如果都不是的話 就躲在家裡 像這樣的中文用Python改寫就變成 if 下雨:
帶傘
elif 下雪:
帶雪衣
elif 出太陽:
戴太陽眼鏡
else:
躲在家裡
就是這樣簡單易懂,那你可能會想,如果下雨和出太陽同時成立怎麼辦? 答案很簡單,因為這樣的判斷,或是以人的思考角度來看,都是先從上面考慮下來的,所以上面的會優先考慮,不成立時才往下考慮,因此當上面有任何一條成立時,這一整串判斷句就不會再往下看了,它做完它該做的工作時就跳到else的區塊外面繼續往下做了,總而言之,就是從上往下判斷,一成立就執行,然後跳出去,當上面全部都沒有一個成立時才會走到else。 以下範例示範else if語句: # -*- coding: utf-8 -*-
# 今天的溫度
t = 4
# 溫度是否小於4度
if t < 4:
print u"冷死了,不想出門"
print u"寧願躲在家裡"
# 溫度是否大於4且小於15
elif t > 4 and t < 15:
print u"有點冷"
# 溫度是否等於4
elif t == 4:
print u"夭壽喔,四度出去一定死的"
# 其它情況
else:
print u"今天溫度還算好"
你可以試著改變t,觀查這個判斷句每次印出來的東西。
|
核心是 Joomla!. Designed by: Free Joomla Theme, whois protect. Valid XHTML and CSS.


