我编写了一个函数来计算RPN表达式。首先,我定义了帮助函数evaluate(a, b, op),它使用表示两个整数的两个字符串a和b,以及一个运算符op,它要么是'+‘,要么是'*’。
示例:
>>> evaluate('10', '5', '+')
'15'
>>> evaluate('5', '3', '*')
'15'然后,我在主函数rpn(s)中使用了这个函数,该函数接受一个包含有效RPN表达式的字符串,并返回结果。整个代码如下:
def evaluate(a, b, op):
return eval(a + op + b)
def rpn(s):
s = tuple(s.split(' '))
if len(s) == 3:
return evaluate(s[0], s[1], s[2])
else:
return evaluate(rpn(' '.join(s[:(len(s) - 1) // 2])), rpn(' '.join(s[(len(s) - 1) // 2:-1])), s[-1])产出应是:
>>> rpn('10 5 + 3 7 * +')
36但是当我运行这段代码时,我得到了TypeError: unsupported operand type(s) for +: 'int' and 'str'。错误在哪里,如何修复?
发布于 2020-06-10 14:51:04
您应该将这些值作为字符串传递给values字符串,尝试如下:
def evaluate(a, b, op):
return eval(str(a) + str(op) + str(b))https://stackoverflow.com/questions/62306284
复制相似问题