ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 习题 30: Else 和 If 前一习题中你写了一些 “if 语句(if-statements)”,并且试图猜出它们是什么,以及实现的是什么功能。在你继续学习之前,我给你解释一下上一节的加分习题的答案。上一节的加分习题你做过了吧,有没有? 1. 你认为 if 对于它下一行的代码做了什么? If 语句为代码创建了一个所谓的“分支”,就跟 RPG 游戏中的情节分支一样。if 语句告诉你的脚本:“如果这个布尔表达式为真,就运行接下来的代码,否则就跳过这一段。” 1. 为什么 if 语句的下一行需要 4 个空格的缩进? 行尾的冒号的作用是告诉 Python 接下来你要创建一个新的代码区段。这根你创建函数时的冒号是一个道理。 1. 如果不缩进, 会发生什么事情? 如果你没有缩进,你应该会看到 Python 报错。Python 的规则里,只要一行以“冒号(colon)” : 结尾,它接下来的内容就应该有缩进。 1. 把习题 27 中的其它布尔表达式放到 if语句 中会不会也可以运行呢?试一下。 可以。而且不管多复杂都可以,虽然写复杂的东西通常是一种不好的编程风格。 1. 如果把变量 people, cats, 和 dogs 的初始值改掉, 会发生什么事情? 因为你比较的对象是数字,如果你把这些数字改掉的话,某些位置的 if 语句会被演绎为 True,而它下面的代码区段将被运行。你可以试着修改这些数字,然后在头脑里假想一下那一段代码会被运行。 把我的答案和你的答案比较一下,确认自己真正懂得代码“区段”的含义。这点对于你下一节的练习很重要,因为你将会写很多的 if 语句。 把这一段写下来,并让它运行起来: <table class="highlighttable"><tbody><tr><td class="linenos"> <div class="linenodiv"> <pre> 1&#13; 2&#13; 3&#13; 4&#13; 5&#13; 6&#13; 7&#13; 8&#13; 9&#13; 10&#13; 11&#13; 12&#13; 13&#13; 14&#13; 15&#13; 16&#13; 17&#13; 18&#13; 19&#13; 20&#13; 21&#13; 22&#13; 23</pre> </div> </td> <td class="code"> <div class="highlight"> <pre>people = 30&#13; cars = 40&#13; buses = 15&#13; &#13; &#13; if cars &gt; people:&#13; print "We should take the cars."&#13; elif cars &lt; people:&#13; print "We should not take the cars."&#13; else:&#13; print "We can't decide."&#13; &#13; if buses &gt; cars:&#13; print "That's too many buses."&#13; elif buses &lt; cars:&#13; print "Maybe we could take the buses."&#13; else:&#13; print "We still can't decide."&#13; &#13; if people &gt; buses:&#13; print "Alright, let's just take the buses."&#13; else:&#13; print "Fine, let's stay home then."&#13; </pre> </div> </td> </tr></tbody></table> ### 你应该看到的结果 ~~~ $ python ex30.py We should take the cars. Maybe we could take the buses. Alright, let's just take the buses. $ ~~~ ### 加分习题 1. 猜想一下 elif 和 else 的功能。 1. 将 cars, people, 和 buses 的数量改掉,然后追溯每一个 if 语句。看看最后会打印出什么来。 1. 试着写一些复杂的布尔表达式,例如 cars>peopleandbuses<cars。 1. 在每一行的上面写注解,说明这一行的功用。