練習問題(アルゴリズム編)

'''
python main.py 1 2 + 4 5 + \*
> 27
python main.py 1 2 + 3 \* 4 5 / -
> 8.2
python main.py 5 13 + 6 / 2 % 4 5 \* -
> -19
'''
import sys
st = []
try:
  for e in sys.argv[1:]:
    if e=='+':
      b, a = st.pop(), st.pop()
      st.append(a+b)
    elif e=='-':
      b, a = st.pop(), st.pop()
      st.append(a-b)
    elif e=='*':
      b, a = st.pop(), st.pop()
      st.append(a*b)
    elif e=='/':
      b, a = st.pop(), st.pop()
      if a%b==0: st.append(a/b)
      else: st.append(a*1./b)
    elif e=='%':
      b, a = st.pop(), st.pop()
      if a!=int(a) or b!=int(b) or (a/b)!=int(a/b):
        print 'mod error!'
        exit(1)
      st.append(a%b)
    else:
      st.append(int(e))
except IndexError:
  print 'index error!'
  exit(1)
print st.pop()