跳转到内容

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,比较他们并印出居于中间者。