我的功能在以下输入interpret(["NOT", "true"], {"NOT": "false"})
基本上,该函数是关于“创建我自己的”逻辑值运算符,如果列表中的值与字典中的键匹配则解释它们。我在这里KeyError: "true"
,但我不知道如何解决它。
我的递归错误还是什么?它应该返回“false”,因为在这种情况下“NOT”等于“false”,但在其他情况下,如果你知道我的意思,它应该作为普通的非操作函数。
我的功能代码:
def interpret(logicalExpression, interpretation):
if type(logicalExpression) is str: #
if not interpretation:
return logicalExpression
return interpretation[logicalExpression]
elif len(logicalExpression) == 1:
return interpret(logicalExpression[0], interpretation)
elif logicalExpression[1] == "OR" and len(logicalExpression) >= 3:
if interpret(logicalExpression[0], interpretation) == "true" or interpret(logicalExpression[2:], interpretation) == "true":
return "true"
else:
return "false"
elif logicalExpression[1] == "AND" and len(logicalExpression) >= 3:
if interpret(logicalExpression[0], interpretation) == "true" and interpret(logicalExpression[2:], interpretation) == "true":
return "true"
else:
return "false"
if logicalExpression[0] == "NOT" and len(logicalExpression) == 2:
if interpret(logicalExpression[1:], interpretation) == "false":
return "true"
else:
return "false"
答案 0 :(得分:0)
您在 logicalExpression 中传递"true"
,但未在解释中传递"true"
。 KeyError 是正确的行为。
我想你想传递解释,如{"true": "true", "false": "false"}
>>> interpret(["NOT", "true"], {"true": "true", "false": "false"})
'false'