我只想写一个Python程序,它可以接受JSON格式的算术表达式,解析和计算答案。你知道吗
像PLUS这样的每个操作符至少需要2个参数,MINS和TIMES正好需要2个参数,但是检查并不相关
我能够读取JSON对象,但困难的是我不明白如何使用递归来解析嵌套对象。你知道吗
任何指导/帮助/想法都会有帮助
我认为递归在这里是一件很好的事情,但是我不明白基本情况应该是什么,以及如何处理不同类型的操作(加、减、次)
{
"root": { "description": "Result should be 8",
"plus": [{
"times": [{
"int": 2
}, {
"int": 3
}]
}, {
"minus": [{
"int": 4
}, {
"int": 2
}]
}]
}
目标二给我带来更多问题
{
"root": { "description":" it evaluates to 12.",
"plus": [{
"plus": [{
"plus": [{
"plus": [{
"plus": [{
"int": 2
},
{
"int": 2
}
]
},
{
"int": 2
}
]
},
{
"int": 2
}
]
},
{
"int": 2
}
]
},
{
"int": 2
}
]
}
}
我尝试了下面的代码,但它不能正确地处理嵌套表达式:
def operation():
val = 0
with open("expression1.json") as complex_data:
data = complex_data.read()
z = json.loads(data)
data = z['root']
for op in data:
if op == 'description':
pass
elif op == 'plus':
return sum(element[k] for element in data[op] for k in element)
elif op == 'minus' or op == 'times':
if len(data[op]) != 2:
raise ValueError('2 elements expected if operation is minus >or times')
nums = [element[k] for element in data[op] for k in element]
if op == 'minus':
return abs(nums[0] - nums[1])
else:
return nums[0]*nums[1]
else:
raise ValueError('Invalid operation')
抱歉,这是我第一次使用堆栈溢出,我不知道如何格式化代码
目前没有回答
相关问题 更多 >
编程相关推荐