BOO入門/流程控制/條件

BOO入門 > 流程式控制/條件 (上一章:變數 下一章:流程控制-迴圈)


If 述句

編輯
  定義 if述句:包含一個或多個布林運算式的控制述句,用來決定是否執行其他述句。

if 述句讓程式可以依據條件而執行不同的程式區塊。如果給予的條件為真,與此相關的程式區塊將會執行。

// if 述句
i = 5
if i == 5:
    print "i 等於 5."

// 輸出結果
i 等於 5.

小心! 留意 i=5 與 i==5 的不同之處,i=5 是指定 5 給 i,而 i==5 則是比較 i 與 5。如果你在條件式裏面使用了指定(也就是i=5),Boo將會發出警告。(譯註:如果你使用過 Java, C# 或是 C/C++,相信對此不陌生。)

此外,你應該也注意到了,不像其他的語言,Boo 沒有 then-endif 或是 do-end 或是 { }。程式區塊是自動由 Boo 依據縮排來決定。依據縮排原則,你的程式也會比較容易看懂。

  建議 永遠使用 tab 來縮排,在你的編輯器或開發環境裏,把 tab 的部份設置好。

(譯註:這也與 Python 一致,所以縮排很重要,tab 的統一也很重要,要不就統一使用 tab,要不就統一使用空白字元,如果混雜使用,Boo 也會提出警告)

你也可以在 if 程式區塊裏再使用 if

// 多個 if 述句
i = 5
if i > 0:
    print "i 大於 0."
    if i < 10:
        print "i 小於 10."
        if i > 5:
            print "i 大於 5."

// 輸出結果
i 大於 0.
i 小於 10.

If-Else 述句

編輯

與 if 相反地,就是 else 述句,當 if 述句的條件式為 false 時,就會執行 else 述句內的程式區塊。

i = 5
if i > 5:
    print "i 大於 5."
else:
    print "i 小於或等於 5."
// 執行結果
// i 小於或等於 5.

很簡單吧~

If-Elif-Else 述句

編輯

現在如果你想要在 if 述句條件式為 false 之後,再檢查某條件式的話,這也很簡單,使用 elif 述句。

i = 5
if i > 5:
    print "i 大於 5."
elif i == 5:
    print "i 等於 5."
elif i < 5:
    print "i 小於 5."
// 輸出結果
// i 等於 5.

使用時,要記住,if 只能有一個,elif 可以有多個,else 則可有可無。

Unless 述句

編輯

如果你想寫出適合閱讀的述句來檢查條件式不為 true,unless 述句是個不錯的選擇。

i = 5
unless i == 5:
    print "i 等於 5."
// 不會有輸出結果

並不會有輸出結果,因為 i 等於 5,但 unless 等同於 if not i==5,所以並不會印出"i 等於 5."。

作為修飾詞

編輯

就與 Ruby 與 Perl 相似,你可以修飾一個述句。

i = 0
print i
i = 5 if true
print i
i = 10 unless true
print i
// 輸出結果
// 0
// 5
// 5
  建議 不要在太長的述句裏使用修飾詞。這種情況下,你應該用程式區塊會比較好。一般來說,如果該述句超過三個字以上,就不要使用。這可以讓你的代碼更容易閱讀,也比較美觀。

常見的條件式

編輯

這兒列出一些常見的條件式用法:

運算子 代表意義 例子
== 等於 5 == 5
!= 不等於 0 != 5
> 大於 4 > 2
< 小於 2 < 4
>= 大於等於 7 >= 7 and 7 >= 4
<= 小於等於 4 <= 8 and 6 <= 6

Not 條件

編輯

檢查條件式不為 true 時,你可以使用 not。

i = 0
if not i > 5:
    print 'i 不大於 5'
// 輸出結果
// i 不大於 5

多重條件

編輯

檢查超過一個以上的條件式,你可以使用 and 或者是 or。使用括號來改變運算的順序。

i = 5
if i > 0 and i < 10:
    print "i is between 0 and 10."
if i < 3 or i > 7:
    print "i is not between 3 and 7."
if (i > 0 and i < 3) or (i > 7 and i < 10):
    print "i is either between 0 and 3 or between 7 and 10."

// 輸出結果
// i is between 0 and 10.

and 需要兩邊的條件式都是 true 才為 true,而 or 只需要其中一邊的條件式為 true 或兩者都是 true 時,即為 true。

練習

編輯
  1. 現在有數值 x = 4, y = 8, 和 z = 6,比較他們並印出居於中間者。