我正在编写一个简单的基于文本的游戏,但我在这里遇到了错误。
def lamp():
print "You pick up the lamp and examine it."
print "It looks like an ordinary gas lamp."
print "What do you do?"
lamp_action = raw_input("> ")
if "rub" in lamp_action:
rub()
elif "break" or "smash" in lamp_action:
print "The lamp shatters into pieces."
dead("The room disappears and you are lost in the void.")
else:
lamp()
如果我注释掉elif部分,Python会在else上给出无效的语法错误。如果我离开elif部分,程序将运行没有错误,但甚至打字随机像#34; aaaaaa"将遵循elif行动。
如果我用这样的东西替换else部分,我也无法工作:
else:
print "That's not a good idea."
lamp()
或者像这样:
else:
dead("That's not a good idea.")
死亡的地方:
def dead(why):
print "%s Game over." % why
exit(0)
我错过了什么?
答案 0 :(得分:3)
"break" or "smash" in lamp_action
解释为测试"break"
,然后测试"smash" in lamp_action
。由于"break"
是非空字符串,因此始终将其解释为" true",因此始终会使用elif
。
正确的表格是
elif lamp_action in ('break', 'smash'):
即。测试行动是in
可能性列表。