# calculator **Repository Path**: meijinmeng/calculator ## Basic Information - **Project Name**: calculator - **Description**: 计算器实现加减乘除和一些稍微复杂点的正则+函数递归 - **Primary Language**: Python - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-06-10 - **Last Updated**: 2020-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 作者:Jame Mei 版本:示例版本 v0.1 需求:计算器:实现加减乘除,还有各种姿势的括号..... 一.解题思路是,需要优先处理内层括号运算--外层括号运算--先乘除后加减的原则: 1、递归寻找表达式中只含有 数字和运算符的表达式,并计算结果 2、由于整数计算会忽略小数,所有的数字都认为是浮点型操作,以此来保留小数 二.使用技术: 1、正则模块RE 2、函数的递归 三.主要步骤 1、正则处理用户输入的字符串,然后对其进行判断,判断计算公式是否有括号,有就先将计算公式进行正则处理,先获取最里层的每一个数据,然后一一计算 所要用到的正则是: inner = re.search("\([^()]*\)", calc_input) 2、把有括号的计算公式计算出来的结果替换原来初始公式的位置,计算之前分别对重复运算符进行处理 需要处理的重复运算的函数是 def del_double(str): str = str.replace("++", "+") str = str.replace("--", "-") str = str.replace("+-","-") str = str.replace("- -","-") str = str.replace("+ +","+") return str 3、然后依次从里到外去除括号并进行计算,和位置替换 calc_input = calc_input.replace(inner.group(), str(ret)) 将计算出来的结果分别替换原计算公式 4、最后得出没有括号的公式,合并调用计算控制函数进行计算,中间需要注意的就是 负号 和 数字 与 * 在一起的处理情况!