习题 31: 作出决定 ***************************** 这本书的上半部分你打印了一些东西,而且调用了函数,不过一切都是直线式进行的。\ 你的脚本从最上面一行开始,一路运行到结束,但其中并没有决定程序流向的分支点。\ 现在你已经学了 ``if``, ``else``, 和 ``elif`` ,你就可以开始创建包含条件判断\ 的脚本了。 上一个脚本中你写了一系列的简单提问测试。这节的脚本中,你将需要向用户提问,\ 依据用户的答案来做出决定。把脚本写下来,多多鼓捣一阵子,看看它的工作原理是\ 什么。 .. literalinclude:: ex/ex31.py :linenos: 这里的重点是你可以在“if 语句”内部再放一个“if 语句”。这是\ 一个很强大的功能,可以用来创建嵌套(nested)的决定,其中的一个分支将引向另一个\ 分支的子分支。 你需要理解 if 语句 包含 if 语句 的概念。做一下加分习题,这样你会确信\ 自己真正理解了它们。 你应该看到的结果 =================== 我在玩一个小冒险游戏,我玩的水平不怎么好: .. literalinclude:: ex/ex31.txt :language: console 加分习题 ============ 为游戏添加新的部分,改变玩家做决定的位置。尽自己的能力扩展这个游戏,不过别把游戏弄得\ 太怪异了。 常见问题回答 ========================== 可以用多个 ``if/else`` 来取代 ``elif`` 吗? 有时候可以,不过这也取决于额 ``if/else`` 是怎样写的,而且这样一来 python 就需要去检查\ 每一处 ``if/else``\,而不是像 ``if/elif/else`` 一样,只要检查到第一个 ``True`` 就\ 可以停下来了。试着写些代码看两者有何不同。 怎样判断一个数字处于某个值域中? 两个办法:经典语法是使用 ``1 < x < 10``\,或者用 ``x in range(1, 10)`` 也可以。 怎样用 ``if/elif/else`` 区块实现四个以上的条件判断? 简单,多写几个 ``elif`` 区块就可以了。