Я выполняю назначение python, но есть ошибка, когда я хотел протестировать вышеприведенный пример.Ошибка: объект 'function' не подлежит индексированию
Вот мой код:
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'
Когда я проверить его с помощью:
evalTerm({}, {'Int': ['True']})
он дает ошибку:
'function' object is not subscriptable
Как я могу это исправить?
Кстати: в моем коде я написал: Node = dict; Leaf = str – Jason
Это ваш фактический отступ? Для python нам нужно увидеть точный отступ, который вы используете. – khelwood
Это сообщение об ошибке указывает на определенную строку? Вероятно, ошибка там ... Также включите в свой вопрос команду 'Node = dict',' Leaf = str'! – Jasper