Python iF语句的计算结果不正确

Python iF语句的计算结果不正确,python,dictionary,Python,Dictionary,gridSystem是一个字典,它的键是另一个包含操作和值的字典。我在操作函数中遇到的问题是第二条if语句。如果action不等于dictionarya中的某个操作(看,Boots..这些名称现在是占位符),它应该只打印“重试”。但出于某种原因,无论发生什么情况,它的计算结果都是真的,当我在字典中输入一些不是动作的内容时,它会给我一个错误。有人能帮忙吗?谢谢 a = {"Look":1, "Boots":32} gridSystem = {"One":a} def action():

gridSystem
是一个字典,它的键是另一个包含操作和值的字典。我在
操作
函数中遇到的问题是第二条if语句。如果
action
不等于dictionary
a
中的某个操作(看,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()
actiontoString=''。join([action])
实际上将创建
action
(一个字符串)的精确副本,并将其保存到名为
actiontoString
(另一个字符串,完全相同)的引用中。这总是
正确的


您可能需要在gridSystem[room]中执行
if操作:
,而不是当前的相等性检查。将
elif…:
替换为简单的
else:
。使用
print“You have selected to”,actiontoString
,而不是从用户那里获取不必要的输入。

这就是问题所在。ThanksA良好的调试技术是在
if
语句之前打印变量,看看它们是否包含您认为的值。