练习 30 Else 和 if
在上个练习中你学到了一些 if 语句,思考了它的含义和作用。在你学习更多内容之前,我会解释一下上个附加练习中的问题。首先确定你做了那些练习。
1. 你认为 if 对它下面的代码起什么作用?
if 语句在代码中创建了一个“分支”(branch),有点类似于在一本冒险书中,你选择了哪个答案,就翻到对应的一页,如果你选择了不同的答案,就会去到不同的地方。if 语句就是告诉脚本,如果这个布尔表达式是 True,那就运行它下面的代码,否则的话就跳过。
2. 为什么 if 下面的代码要缩进 4 个空格?
通过一行代码结尾的冒号告诉 Python 你在创建一个新的代码块,然后缩进四个空格告诉 Python 这个代码块中都有些什么。这就跟本书前半部分中你学的函数是一样的。
3. 如果没有缩进会发生什么?
如果没有缩进,你很可能收到一个错误提示。Python 一般会让你在一个带 : 的代码行下面缩进一些内容。
4. 你能从练习 27 里面把一些布尔表达式放进 if 语句吗?试试看。
试试吧,你可以的。你可以把它们写得很复杂,不过复杂的东西一般风格都很糟糕。
5. 如果你改变 people,cats 和 dogs 的初始值会发生什么?
因为你在比较数字,所以如果你改变了数字,不同的 if 语句将会得出不同的判断结果,那么下面某些代码块就有可能运行。回到练习中给这些变量一些不同的数值,然后看看你能否在脑中判断出来哪些代码块会运行。
把我的答案和你的比较一下,然后确保你真的理解了代码块的概念。这对你进行接下来的练习很重要。把下面的代码输入进去然后运行。
ex30.py
1 people = 30
2 cars = 40
3 trucks = 15
4
5
6 if cars > people:
7 print("We should take the cars.")
8 elif cars < people:
9 print("We should not take the cars.")
10 else:
11 print("We can't decide.")
12
13 if trucks > cars:
14 print("That's too many trucks.")
15 elif trucks < cars:
16 print("Maybe we could take the trucks.")
17 else:
18 print("We still can't decide.")
19
20 if people > trucks:
21 print("Alright, let's just take the trucks.")
22 else:
23 print("Fine, let's stay home then.")
你会看到
练习 30 会话
$ python3.6 ex30.py
We should take the cars.
Maybe we could take the trucks.
Alright, let's just take the trucks.
附加练习
- 试着猜猜 elif 和 else 的作用是什么。
- 改变 cars,people,和 trucks 的数值,然后追溯每一个 if 语句,看看什么会被打印出来。
- 试试一些更复杂的布尔表达式,比如cars > people 或者 trucks < cars。
- 在每一行上面加上注释。
常见问题
如果多个 elif 块都是 True 会发生什么? Python 从顶部开始,然后运行第一个是 True 的代码块,也就是说,它只会运行第一个。