这篇来讲一讲python实现四则混合运算的计算器案例
以此表达式为例8 * 12 +(6 - ( 5 * 6 - 2) / 77 + 2 )* ( 3 - 7 )+ 8
#!/usr/bin/env python
# -- coding = 'utf-8' --
# Author Allen Lee
# Python Version 3.5.1
# OS Windows 7
"""
计算此表达式 :8 * 12 +(6 - ( 5 * 6 - 2) / 77 + 2 )* ( 3 - 7 )+ 8 的步骤分拆:
step 1: 匹配到最里层的括号 ( 5 * 6 - 2) = 28,之后表达式变为:8 * 12 +(6 - 28 / 77 + 2 )* ( 3 - 7 )+ 8
step 2: 匹配外层的括号 (6 - 28 / 77 + 2 )= 7.636 、 ( 3 - 7 )= -4,之后表达式变为:8 * 12 + 7.636 * -4 + 8
step 3: 匹配 * / ,计算乘除 8 *12 = 96 、 7.636 * -4=30.544,之后表达式变成: 96 - 30.544 + 8
step 4: 匹配 + - , 计算加减,96 - 30.544 + 8 = 73.456
思路:
1、单独将加减乘除的计算做成函数;
2、然后在递归的使用到匹配到的表达式中;
3、单独的加减 乘除函数需要借用递归来处理表达式中的所有对应运算
关键点和难点在于精确匹配出子表达式
"""
import re
def jiajian(arg):
'''
处理加减算法
:return:
'''
#__contains__ : 了解某序列是否包含特定的值 x in seq seq.__contains__(x)
#首先处理加减算法中的正负号逻辑
while True:
if arg[0].__contains__('--') or arg[0].__contains__('+-') or arg[0].__contains__('-+') or arg[