6.1 條件判斷

if判斷句

  1. if 條件:  
  2.     成立的話要做的事情  

它是由if開頭,隔一個以上的空白,然後接條件,再接一個冒號,然後斷行後要有固定的縮排,把要做的事情的區塊擠出來

把它想成中文就變成,如果條件成立的話,就做要做的事情。

Python沒有end if或end還有大括號這種東西,他是靠縮排,這是少數靠縮排來區分"區塊"的語法,這麼做有個好處就是強迫你要縮排,程式才容易看得懂,對於已經學過其它語言的人可能會不太習慣。

甚麼是縮排

所謂的縮排,就是指用一定數量的空白,將程式碼往右擠,形成整齊的巢狀結構,此一來很容易看得懂程式碼,但是在Python縮排被拿來當程判斷區塊的規則,所以你在Python不得不縮排。

ex.

  1. # -*- coding: utf-8 -*-  
  2.   
  3. # 如果1+1等於2的話  
  4. if 1+1 == 2:  
  5.     print u"如你所見,1+1等於2"  
  6.     print u"在同一縮排裡"  
  7.     print u"都被視為同樣的區塊"  
  8.     print u"也就是條件成立時會執行的程式碼區塊"  
  9.   
  10. a = 10  
  11.   
  12. # Python沒有規定要縮排幾個空白  
  13. # 但是一個區塊裡的縮排  
  14. # 空白個數都要一樣  
  15. # 以下用2個空白做縮排  
  16. if a == 10:  
  17.   print u"a等於10"  
  18.   print u"在區塊裡都要一樣的縮排長度"  
  19.   
  20.   # 如果在區塊裡還有區塊  
  21.   # 一樣是往右再加縮排  
  22.   if a % 2 == 0:  
  23.     print u"a是2的倍數"  
  24.     print u"這一行一樣是同一個區塊" 

如範例所示,Python用縮排來區分程式的區塊,雖然Python沒有規定縮排要幾個空白,但是最好一整個檔案裡的縮排都用一定的個數,避免突然用4個,另一個地方用2個,這樣會造成混亂,這個範例是為了示範錯誤的方式所以才這樣做,否則一般都是照這樣的慣例來做。

邏輯運算

有了判斷句之後,還有一個重要的地方,就是條件,這時候就用上邏輯運算了。
邏輯運算式:

運算 說明
== 相等,兩邊相等時為真
!= 不相等,兩邊不相等時為真
< 小於,左邊小於右邊時為真

>

大於,左邊大於右邊時為真

<= 小於等於,左邊小於等於右邊時為真
>= 大於等於,右邊大於等於右邊時為真
or 或,左右兩邊只要有一個為真時為真
and 且,左右兩邊都要為真時為真
not 否定,右邊為真時為假,為假時為真

所謂的真就是指成立的意思,假也就是不成立的意思,而Python裡面有兩個字用來表示真和假,分別為True和False,要注意的是大小寫都要一樣。

else語法

"那沒有的話怎麼辦?",在程式語言裡就是else,else就是話裡面的否則,不成立時程式就會跳到else的區塊裡去執行。

ex.

# -*- coding: utf-8 -*-  
  1.   
  2. # 我們想判斷10是否為2和5的倍數  
  3. if 10 % 2 == 0 and 10 % 2 == 0:  
  4.     print u"10是2和5的倍數"  
  5. else:  
  6.     # 因為上面那句成立了,所以這句不會被執行  
  7.     print u"10不是2和5的倍數"  
  8.   
  9. a = 10  
  10. b = 20  
  11. # 我們想判斷a是否大於b  
  12. if a > b:  
  13.     print u"a大於b"  
  14. # else 可以被想成中文裡的"否則"  
  15. else:  
  16.     # 上面不成立,因此會執行這個區塊  
  17.     print u"a小於或等於b"  

elif語法

有些時候,我們會針對一件事情想很多對策,如果前面的不行,那就換下一條,這樣一直下去,elif在程式語言裡就是這樣的角色,在其它語言裡通常是 else if,在Python被縮寫成elif。

如果同時成立怎麼辦?

因為這樣的判斷,或是以人的思考角度來看,都是先從上面考慮下來的,所以上面的會優先考慮,不成立時才往下考慮,因此當上面有任何一條成立時,這一整串判斷句就不會再往下看了,它做完它該做的工作時就跳到else的區塊外面繼續往下做了,總而言之,就是從上往下判斷,一成立就執行,然後跳出去,當上面全部都沒有一個成立時才會走到else。

ex.

  1. # -*- coding: utf-8 -*-  
  2.   
  3. # 今天的溫度  
  4. t = 4  
  5.   
  6. # 溫度是否小於4度  
  7. if t < 4:  
  8.     print u"冷死了,不想出門"  
  9.     print u"寧願躲在家裡"  
  10.   
  11. # 溫度是否大於4且小於15  
  12. elif t > 4 and t < 15:  
  13.     print u"有點冷"  
  14.   
  15. # 溫度是否等於4  
  16. elif t == 4:  
  17.     print u"夭壽喔,四度出去一定死的"  
  18.   
  19. # 其它情況  
  20. else:  
  21.     print u"今天溫度還算好"