【函数加正则实现简单计算器】教程文章相关的互联网学习教程文章

函数加正则实现简单计算器【代码】

本实现主要用到正则匹配的知识和函数的知识点完成一个能实现简单的加减乘除的计算器的运算import re#乘除运算 def numl_mod(args):resurt = re.compile(‘(\d+\.?\d*)([*/])(\-?\d+\.?\d*)‘)#正则匹配,将匹配出来的结果赋给resurtwhile resurt.search(args):#while循环判断直到算出最终结果new_num = resurt.search(args)num = new_num.group()#取出原值赋给numnum1 = float(new_num.group(1))num2 = new_num.group(2)#取出来的是...

python3 运用正则实现计算器【代码】

import rebracket = re.compile(r‘\([^()]+\)‘) # 寻找最内层括号规则 mul = re.compile(r‘(\d+\.?\d*\*-\d+\.?\d*)|(\d+\.?\d*\*\d+\.?\d*)‘) # 寻找乘法运算规则 div = re.compile(r‘(\d+\.?\d*/-\d+\.?\d*)|(\d+\.?\d*/\d+\.?\d*)‘) # 寻找除法运算规则 add = re.compile(r‘(-?\d+\.?\d*\+-\d+\.?\d*)|(-?\d+\.?\d*\+\d+\.?\d*)‘) # 寻找加法运算规则 sub = re.compile(r‘(-?\d+\.?\d*--\d+\.?\d*)|(-?\d+\.?\d*-\d...

正则与计算器【代码】

import redef repeat_func(s):#去掉重复的+——号repeat = re.findall(‘\+\-|\-\-|\++\-\+‘, s)if len(repeat) > 0:for i in repeat:if i == ‘--‘or i == ‘++‘:s = s.replace(i, ‘+‘)if i == ‘+-‘or s == ‘-+‘:s = s.replace(i, ‘-‘)return sdef mul_devid(content):# 计算乘除pattern1 = ‘-?\d+\.?\d*(?:\*|\/)-?\d+\.?\d*‘while 1:first = re.search(pattern1, content)#匹配乘除if first:if‘*‘in first.group...

使用python正则表达式编写一个计算器方法【图】

#!/usr/bin/evn pythonimport redef deal_negative_issue(calc_list): new_calc_list=[] #定义一个新的空列表,后面筛选完成后将数据放入新列表中 for index,item in enumerate(calc_list): if item.strip().endswith("*") or item.strip().endswith("/"): #挑选出以乘号或除号结尾的字符串 new_calc_list.append("%s-%s"%(calc_list[index],calc_list[index+1])) #拼接字符串 处理类似2*5/-3 ...

python正则表达式之作业计算器【图】

作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式,运算后得出结果,结果必须与真实的计算器所得出的结果一致 一、说明: 有一点bug就是不能计算幂次方,如:6**6会报错 该计算器思路: 1、没用使用递归,先找出并计算所有括号里的公式,再计算乘除和加减 2、所有的数字...

python正则计算器写法、用正则来匹配【代码】

1.# a = 1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2)) 利用正则计算不用eval exec 思路: (1)先把内层的小括号匹配出来,从里向外,(2)然后计算小括号里面乘除的值,然后计算加减的值(3)把计算好的结果进行替换,[字符串的替换]"""import re # 计算乘除的方法 def parse_exp(exp):if "*" in exp:a,b = exp.split("*")# print(a,b)return str(float(a) * float(b))if "/" in exp:a,b = exp.split("/")retu...