前一习题中你写了一些「if 语句 (if-statements)」,并且试图猜出它们是什么,以及实现的是什么功能。在你继续学习之前,我给你解释一下上一节的加分习题的答案。上一节的加分习题你做过了吧,有没有?
1. 你认为 if 对于它下一行的代码做了什麼?`if` 语句为代码创建了一个所谓的「分支(branch)」,就跟 RPG游戏中的情节分支一样。if 语句告诉你的脚本:「如果这个布尔表达式为真,就执行接下来的代码,否则就跳过这一段。」
2. 把习题29中的其它布尔表达式放到 if 语句中会不会也可以执行呢?试一下。可以。而且不管多复杂都可以,虽然写复杂的东西通常是一种不好的写作风格。
3. 如果把变量 people、cats和 dogs 的初始值改掉,会发生什么事情?因为你比较的对象是数字,如果你把这些数字改掉的话,某些位置的 if 语句会被演绎为 True,而它下面的程序区段将被运行。你可以试着修改这些数字,然后在头脑里假想一下那一段代码会被运行。
把我的答案和你的答案比较一下,确认自己真正懂得代码「区段(block)」的含义。这点对于你下一节的习题练习很重要,因为你将会写很多的if 语句。
把这一段写下来,并让它运行起来:
~~~
people = 30
cars = 40
buses = 15
if cars > people
puts "We should take the cars."
elsif cars < people
puts "We should not take the cars."
else
puts "We can't decide."
end
if buses > cars
puts "That's too many buses."
elsif buses < cars
puts "Maybe we could take the buses."
else
puts "We still can't decide."
end
if people > buses
puts "Alright, let's just take the buses."
else
puts "Fine, let's stay home then."
end
~~~
# 你应该看到的结果
* * * * *
~~~
$ ruby ex30.rb
We should take the cars.
Maybe we could take the buses.
Alright, let's just take the buses.
$
~~~
# 加分习题
* * * * *
1. 猜想一下 `elsif` 和 `else` 的功能。
2. 将 `cars`、`people`和`buses`的数量改掉,然后追溯每一个if语句。看看最后会输出什么。
3. 试着写一些复杂的布尔表示达式,例如` cars > people and buses < cars`。 在每一行的上面写注释,说明这一行的作用。
- 笨方法更简单
- 习题 00: 准备工作
- 习题 01: 第一个程序
- 习题 02: 注释和#号
- 习题 03: 数字和数学计算
- 习题 04: 变量的命名
- 习题 05: 更多的变量和输出
- 习题 06: 字符串和文字
- 习题 07: 更多输出
- 习题 08: 输出,输出
- 习题 09: 输出,输出,输出~
- 习题 10: 那是啥?
- 习题 11: 提问
- 习题 12: 模块
- 习题 13: 参数,解包,参数
- 习题 14: 提示和传递
- 习题 15: 读取文件
- 习题 16: 操作文件
- 习题 17: 更多的文件操作
- 习题 18: 命名,变量,代码,函数
- 习题 19: 函数和变量
- 习题 20: 函数和文件
- 习题 21: 函数可以传入信息
- 习题 22: 到现在你学到了什么?
- 习题 23: 阅读一些代码
- 习题 24: 更多练习
- 习题 25: 更多更多的练习
- 习题 26: 恭喜你,现在来考试了!
- 习题 27: 记住逻辑关系
- 习题 28: Boolean表达式练习
- 习题 29: 如果
- 习题 30: Else 和 If
- 习题 31: 做出判断
- 习题 32: 循环和数组
- 习题 33: While
- 习题 34: 存取数组里的元素
- 习题 35: 分支和函数
- 习题 36: 设计和测试
- 习题 37: 重视各种符号