python - python中的前缀符号解析

标签 python math notation addition

马上开始 - 不,这不是家庭作业。

我想用 python 编写一个前缀符号解析器(目前用于求和)...例如

如果给定:+ 2 2 它将返回:4

想法?

最佳答案

前缀表示法可以很容易地递归求值。您基本上会看到第一个标记,如果它是一个“+”,您将评估后面的子表达式以获取要添加的值并将它们相加。如果它是一个数字,您只需返回该数字。

以下代码假定输入格式正确并且是一个有效的表达式。

#! /usr/bin/env python
from collections import deque
def parse(tokens):
    token=tokens.popleft()
    if token=='+':
            return parse(tokens)+parse(tokens)
    elif token=='-':
            return parse(tokens)-parse(tokens)
    elif token=='*':
            return parse(tokens)*parse(tokens)
    elif token=='/':
            return parse(tokens)/parse(tokens)
    else:
            # must be just a number
            return int(token)


if __name__=='__main__':
        expression="+ 2 2"
        print parse(deque(expression.split()))

关于python - python中的前缀符号解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5307218/

相关文章:

python - Pandas 数据框 : loc vs query performance

python - Numpy 二维和一维数组到 latex bmatrix

python - 为 "Four fours"谜题制作解谜器

c++ - 将双常量定义为十六进制?

javascript - 如何访问以数字开头的对象属性(SyntaxError : Unexpected identifier)

python - 如何在 django messages.error 中新建一行

python - 从行到列构建数据集 pandas python

python - 计算两个列表中的对,当相乘时形成一个完美的平方

java - 涉及数学的方法给出与计算器不同的答案

java - 自动将测量格式化为 Java 中的工程单位