用函数写一个计算器(亲测完整版)
Posted Apollo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用函数写一个计算器(亲测完整版)相关的知识,希望对你有一定的参考价值。
第一个函数算乘除法:
import re def atom_cal(exp): if ‘*‘ in exp: a,b = exp.split(‘*‘) return str(float(a)*float(b)) elif ‘/‘ in exp: a,b = exp.split(‘/‘) return str(float(a)/float(b))
第二个函数 删选乘除法
def mul_div(exp): while True: ret = re.search(‘\d+(\.\d+)?[*/]-\d+(\.\d+)?‘,exp) if ret: atom_exp = ret.group() res = atom_cal(atom_exp) exp = exp.replace(atom_exp,res) else: return exp
第三个函数 格式化
def format_exp(exp): exp = exp.replace(‘--‘,‘+‘) exp = exp.replace(‘++‘,‘+‘) exp = exp.replace(‘+-‘,‘-‘) exp = exp.replace(‘-+‘,‘-‘) return exp
第四个函数 计算加减法
def add_sub(exp): ret = re.findall(‘[+-]?\d+(?:\.\d+)?‘,exp) exp_sum = 0 for i in ret: exp_sum += float(i) return exp_sum
第五个函数 计算函数
def cal(exp): exp = mul_div(exp) exp = format_exp(exp) exp_sum = add_sub(exp) return exp_sum
第六个函数 计算主函数
def main(exp): exp = exp.replace(‘ ‘,‘‘) while 1: ret = re.search(‘\([^()]+\)‘,exp) if ret: inner_bracket = res.group() res = str(cal(inner_bracket)) exp = exp.replace(inner_bracket,res) else:break return cal(exp) ret = main(s) print(ret,type(ret))
以上代码测试过,能够正常使用,如发现异常,请留言,一起学习进步!
以上是关于用函数写一个计算器(亲测完整版)的主要内容,如果未能解决你的问题,请参考以下文章
MySQL源码编译MySQL8.x+升级gcc+升级cmake(亲测完整版)