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

 '''
 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()

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS