iF语句错误地评估为true

时间:2015-11-21 02:57:47

标签: python dictionary

gridSystem是一个字典,它的关键字是另一个包含动作和值的字典。我在action函数中的问题是第二个if语句。如果action不等于字典a中的某个操作(Look,Boots ..这些名称现在是占位符),它应该打印出来"再试一次"。但出于某种原因,无论如何,它总是评估为真,并且当我输入不是字典中的动作的东西时给我一个错误。有人可以帮忙吗?谢谢。

a = {"Look":1, "Boots":32}


gridSystem = {"One":a}



def action():
    while True:
        room = raw_input("choose a room ")
        if room in gridSystem.keys():
            action = raw_input("What do you want to do? ")
            actiontoString = ''.join([action])
            if action == actiontoString:
                continue_action = raw_input("You have selected to " + actiontoString)
                print gridSystem[room][action]
                break
            elif not action == actiontoString:
                print "Try again"
        else:
            raw_input("Not in the gridsystem. Press enter to try again")



action()

1 个答案:

答案 0 :(得分:1)

actiontoString = ''.join([action])实际上会创建action(字符串)的精确副本,并将其保存到名为actiontoString的引用(另一个字符串,完全相同)。这总是True

您可能需要if action in gridSystem[room]:而不是当前的等式检查。用简单的elif...:替换else:。使用print "You have selected to", actiontoString而不是从用户那里获得不需要的输入。