我正在尝试使用Python计算后缀表达式,但是它不起作用。我认为这可能是与Python相关的问题。有什么建议么?expression = [12, 23, 3, '*', '+', 4, '-', 86, 2, '/', '+']def add(a,b): return a + bdef multi(a,b): return a* bdef sub(a,b): return a - bdef div(a,b): return a/ bdef calc(opt,x,y): calculation = {'+':lambda:add(x,y), '*':lambda:multi(x,y), '-':lambda:sub(x,y), '/':lambda:div(x,y)} return calculation[opt]()def eval_postfix(expression): a_list = [] for one in expression: if type(one)==int: a_list.append(one) else: y=a_list.pop() x= a_list.pop() r = calc(one,x,y) a_list = a_list.append(r) return contentprint eval_postfix(expression)
3 回答
守着一只汪
TA贡献1872条经验 获得超3个赞
只需替换a_list = a_list.append(r)为a_list.append(r)。
大多数是改变序列/映射项功能,方法不会返回None:list.sort,list.append,dict.clear...
没有直接关系,但是请参见为什么list.sort()不返回排序后的列表?。
慕斯709654
TA贡献1840条经验 获得超5个赞
该方法append不返回任何内容:
>>> l=[]
>>> print l.append(2)
None
您不得写:
l = l.append(2)
但简单地说:
l.append(2)
在您的示例中,替换为:
a_list = a_list.append(r)
至
a_list.append(r)
添加回答
举报
0/150
提交
取消