私は小さな計算機(接頭辞表記を使用)を書いていますが、接頭辞表記を中置記法に変換する方法に興味があります。私は現在関数を持っていますが、それは奇妙であり、それを修正する方法がわかりません。奇妙であるということは、与えられれば['+', 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)+")"
私は何が間違っているのですか?