【发布时间】:2011-09-23 19:24:41
【问题描述】:
我正在编写一个小型计算器(带有前缀符号),我很好奇如何将前缀符号转换为中缀符号。我目前有一个功能,但它很奇怪,我不知道如何修复它。奇怪的是,我的意思是如果给定['+', x, y],它将返回(() + x + () + y),这让我很困惑。这是代码。
def pre_in(read):
#print read
tempOp = read[0]
body = read[1:]
expr = []
for i in range(len(body)-1):
if not isinstance(body[i], list) and body[i] != " ":
expr.append(str(body[i]))
expr.append(tempOp)
else:
expr.append(str(pre_in(body[i])))
expr.append(tempOp)
try:
if not isinstance(body[-1], list):
expr.append(str(body[-1]))
else:
expr.append(str(pre_in(body[-1])))
except:
pass
if expr != None: return "("+' '.join(expr)+")"
我做错了什么?
【问题讨论】:
-
我不明白这个问题(和你的代码)。如果我有
foo = ['+', x, y],表达式[foo[1], foo[0], foo[2]]将导致[x, '+', y]。这不是你想要的吗?在嵌套表达式的情况下,您必须进行简单的递归。也许您应该给出一个更清晰、更复杂的输入和预期输出示例。 -
你也可以尝试使用堆栈,这是做前缀的常用方法中缀,堆栈也可以解决嵌套表达式。
-
似乎与同一个人的上一个问题有关:stackoverflow.com/questions/6338440/small-language-in-python
-
Space_C0wb0y:我的目标是可以处理多个术语,例如
['+', 2, 3, 4, 5]会产生2 + 3 + 4 + 5 -
@Warren 实际上没有。这是关于前缀的,另一个是关于后缀的。我正在重新考虑语言的结构
标签: python math stack infix-notation prefix-notation