习题 31: 作出决定
这本书的上半部分你打印了一些东西,而且调用了函数,不过一切都是直线式进行的。
你的脚本从最上面一行开始,一路运行到结束,但其中并没有决定程序流向的分支点。
现在你已经学了 if
, else
, 和 elif
,你就可以开始创建包含条件判断
的脚本了。
上一个脚本中你写了一系列的简单提问测试。这节的脚本中,你将需要向用户提问, 依据用户的答案来做出决定。把脚本写下来,多多鼓捣一阵子,看看它的工作原理是 什么。
print "You enter a dark room with two doors. Do you go through door #1 or door #2?"
door = raw_input("> ")
if door == "1":
print "There's a giant bear here eating a cheese cake. What do you do?"
print "1. Take the cake."
print "2. Scream at the bear."
bear = raw_input("> ")
if bear == "1":
print "The bear eats your face off. Good job!"
elif bear == "2":
print "The bear eats your legs off. Good job!"
else:
print "Well, doing %s is probably better. Bear runs away." % bear
elif door == "2":
print "You stare into the endless abyss at Cthulhu's retina."
print "1. Blueberries."
print "2. Yellow jacket clothespins."
print "3. Understanding revolvers yelling melodies."
insanity = raw_input("> ")
if insanity == "1" or insanity == "2":
print "Your body survives powered by a mind of jello. Good job!"
else:
print "The insanity rots your eyes into a pool of muck. Good job!"
else:
print "You stumble around and fall on a knife and die. Good job!"
这里的重点是你可以在“if 语句”内部再放一个“if 语句”。这是 一个很强大的功能,可以用来创建嵌套(nested)的决定,其中的一个分支将引向另一个 分支的子分支。
你需要理解 if 语句 包含 if 语句 的概念。做一下加分习题,这样你会确信 自己真正理解了它们。
What You Should See
我在玩一个小冒险游戏,我玩的水平不怎么好:
$ python ex31.py
You enter a dark room with two doors. Do you go through door #1 or door #2?
> 1
There's a giant bear here eating a cheese cake. What do you do?
1. Take the cake.
2. Scream at the bear.
> 2
The bear eats your legs off. Good job!
Study Drills
- 为游戏添加新的部分,改变玩家做决定的位置。尽自己的能力扩展这个游戏,不过别把游戏弄得 太怪异了。
- 写一个全新的小游戏,也许你不喜欢我这个,那你就整一个自己的。这是你的电脑,你想干哈干哈。
Common Student Questions
Can you replace elif with a sequence of if-else combinations? |
---|
You can in some situations, but it depends on how each if/else is written. It also means that Python will check every if-else combination, rather than just the first false ones like it would with if-elif-else . Try to make some of these to figure out the differences. |
How do I tell if a number is between a range of numbers? |
You have two options: Use 0 < x < 10 or 1 <= x < 10 , which is classic notation, or use x in range(1, 10) . |
What if I wanted more options in the if-elif-else blocks? |
Add more elif blocks for each possible choice. |
Copyright (C) 2010 by
Author: Zed Shaw
Translator:Zander Wong