首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算RPN表达式

计算RPN表达式
EN

Stack Overflow用户
提问于 2020-06-10 14:38:54
回答 1查看 90关注 0票数 1

我编写了一个函数来计算RPN表达式。首先,我定义了帮助函数evaluate(a, b, op),它使用表示两个整数的两个字符串a和b,以及一个运算符op,它要么是'+‘,要么是'*’。

示例:

代码语言:javascript
复制
>>> evaluate('10', '5', '+')
'15'
 >>> evaluate('5', '3', '*')
'15'

然后,我在主函数rpn(s)中使用了这个函数,该函数接受一个包含有效RPN表达式的字符串,并返回结果。整个代码如下:

代码语言:javascript
复制
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])

产出应是:

代码语言:javascript
复制
>>> rpn('10 5 + 3 7 * +')
36

但是当我运行这段代码时,我得到了TypeError: unsupported operand type(s) for +: 'int' and 'str'。错误在哪里,如何修复?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-10 14:51:04

您应该将这些值作为字符串传递给values字符串,尝试如下:

代码语言:javascript
复制
def evaluate(a, b, op):
    return eval(str(a) + str(op) + str(b))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62306284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档