逆ポーランド記法 電卓シミュレータ

前提

pythonでの作成

実現したいこと

通常の数式を逆ポーランド記法に変換するプログラム(infix2RPN)を作成し、 infix2RPNで出力された逆ポーランド記法の数式を入力することで 電卓シミュレータを完成させる

発生している問題・エラーメッセージ

エラーメッセージ ### 該当のソースコード ## 演算子の優先度 ## 数値が大きいほど優先度が高い operatorPrecedence = { '(' : 0, ')' : 0, '+' : 1, '-' : 1, '×' : 2, '/' : 2 } def calcFromRPN(expression): stack = [] for i in expression.split(' '): if i == '+': b, a = stack.pop(), stack.pop() stack.append(a + b) elif i == '-': b, a = stack.pop(), stack.pop() stack.append(a - b) elif i == '×': b, a = stack.pop(), stack.pop() stack.append(a * b) elif i == '/': b, a = stack.pop(), stack.pop() stack.append(a / b) else: stack.append(int(i)) return stack[0] def infix2RPN(expression): stack = [] ## 作業用リスト buffer = [] ## 逆ポーランド記法を保存するリスト # bufferから逆ポーランド記法に変換された数式を生成する RPNExp = '' for i in range(0,len(buffer)): if i == len(buffer) - 1: RPNExp = RPNExp + buffer[i] else: RPNExp = RPNExp + buffer[i] + ' ' return RPNExp print('(1+2)×(1⁄3)−(2⁄4) = ', calcFromRPN(infix2RPN('( 1 + 2 ) × ( 1 / 3 ) - ( 2 / 4 )'))) ###試したこと 上記プログラムの作成

コメントを投稿

0 コメント