我正在执行python任务,但是当我想测试上面的情况时出现了一个错误。在
这是我的代码:
def evalTerm(env, t):
if type(t) == Node:
for label in t:
children = t[label]
if label == 'Number':
t = children[0]
return t
elif label == 'Add':
t1 = children[0]
v1 = evalTerm(env, t1)
t2 = children[1]
v2 = evalTerm(env, t2)
return v1 + v2
elif label == 'Multiply':
t1 = children[0]
v1 = evalTerm(env, t1)
t2 = children[1]
v2 = evalTerm(env, t2)
return v1 * v2
elif label == 'Variable':
x = children[0]
if x in env:
return env[x]
else:
print(x + " is unbound")
exit()
elif label == 'Int':
f = children[0]
v = evalTerm[env, f]
if v == 'True':
return 1
elif v == 'False':
return 0
elif label == 'Parens':
x = children[0]
v = evalTerm(env, x)
return v
elif type(f) == Leaf:
if f == 'True':
return 'True'
if f == 'False':
return 'False'
当我使用以下方法进行测试时:
^{pr2}$它给出一个错误:
'function' object is not subscriptable
我怎么能修好它?在
没有完整的回溯是不可能确定的,但最有可能的是你的问题:
}):
^{pr2}$evalTerm
是一个需要调用的递归函数(请注意附加的()
而不是{Python中的方括号
[ ]
用于subscription或索引-这意味着,例如,通过关键字为dictionary中的值寻址,或通过索引为list中的项寻址。在如果您得到异常
'foo' object is not subscriptable
,这意味着您试图对不支持它的'foo'
类型的对象使用订阅。在相关问题 更多 >
编程相关推荐