if else语句的语法无效

时间:2014-04-26 02:33:15

标签: python python-2.7 if-statement

我正在编写一个简单的基于文本的游戏,但我在这里遇到了错误。

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)

我错过了什么?

1 个答案:

答案 0 :(得分:3)

Python将{p> "break" or "smash" in lamp_action解释为测试"break",然后测试"smash" in lamp_action。由于"break"是非空字符串,因此始终将其解释为" true",因此始终会使用elif

正确的表格是

elif lamp_action in ('break', 'smash'):

即。测试行动是in可能性列表。