Python開發——利用規則運算式實現計算器演算法
(1)不使用eval()等系統自帶的計算方法
(2)實現四則混合運算、括弧優先順序解析
思路:
1、字串預處理, 將所有空格去除
2、判斷是否存在括弧運算, 若存在進行第3步, 若不存在則直接進入第4步
3、利用規則運算式獲取最底層括弧內的四則運算運算式
4、將四則運算運算式進行預處理:運算式開頭有負數時, 在運算式前加上一個0
5、利用re.split()、re.findall()方法, 通過加減符號, 對四則運算進行拆分為乘除運算式和數位, 並保留對應的位置下標。
6、利用re.split()、re.findall()方法, 通過乘除符號, 將乘除式拆分為乘除符號與數位,
7、通過re.split()、re.findall()保留的下標位置, 將運算式還原。
8、完成所有乘除運算之後, 返回進行加減運算。
9、完成加減運算後, 返回運算式進行替代。
10、通過遞迴函數, 完成所有括弧運算後。 最後再完成一次四則運算即可完成所有運算。
注:在過程中, 負數的處理存在三個要點:當負數出現在運算式開頭、負數前面存在減法、乘除式中存在負數且不在運算式開頭。
(1)當負數出現在運算式開頭:在前面加上一個0
(2)負數前面存在減法:每次完成一次運算後需要進行一次符號檢查替換
(3)乘除式中存在負數且不在運算式開頭:將負號移到運算式最開頭
源碼: