Я пытаюсь вычислить postfix expresion с помощью python, но это не сработает. Я думаю, что это может быть проблема, связанная с python, любое предложение?Почему list.append return None?
expression = [12, 23, 3, '*', '+', 4, '-', 86, 2, '/', '+']
def add(a,b):
return a + b
def multi(a,b):
return a* b
def sub(a,b):
return a - b
def div(a,b):
return a/ b
def 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 content
print eval_postfix(expression)
Надеюсь, кто-то может мне помочь! любое предложение будет appriated
совершенно не связан с вашим вопросом, но 1/Вы можете прочитать документ для 'operator' модуля, и в вашей' функции calc' вам не нужны лямбды вообще 2/- просто карта в функции оператора и передать аргументы во время вызова, то есть: '{" + ": add," - ": sub,} [opt] (x, y)'. Это также позволит вам определять глобальное отображение, поэтому избегая его создания снова и снова при каждом вызове 'calc'. –
@brunodesthuilliers, спасибо, это wondeful !!! – newlife