本文实例为大家分享了Python实现计算器功能示例代码,供大家参考,具体内容如下
1.简单计算器
#计算一个表达式的时候,首先肯定是先算括号里面的,再算乘除法,后算加减法
import re
# 1.去括号
def remove_kuohao(expression):
'''
这是一个去除括号的函数
:param expression: 传进来的表达式
:return: 计算后的结果
'''
while True:
ret = re.search(r'\([^(]*?\)',expression) #先利用正则匹配到式子里面的括号
if ret: #如果有括号
re_expression = ret.group() #先把找到的括号group()一下得到
# print(re_expression)
res = jianhua(re_expression.strip('()')) #括号里面有*/-+都不一定,就又定义了一个简化这个表达式的函数
# 如果是乘法就执行乘法运算,如果是除法运算就执行除法等,这样的话就直接调用jianhua这个函数了,当然这个式子
# 有括号,顺便把括号也去了,直接计算去掉括号后的式子
expression = expression.replace(re_expression,str(res)) #把计算出来的结果放回去:就是把原来的括号里的表达式
# 替换成现在计算的结果
# print(expression)
continue
break
res = jianhua(expression)
return res
#简化算法
def jianhua(re_expression):
while True:
# 匹配乘除法
ret = re.search(r'\d+\.*?\d*[*/]\-?\d+\.?\d*', re_expression) #利用正则匹配乘除法
if ret: # 如果匹配到有*或/就执行下面的代码
chengchu_expression = ret.group() #就先group一下得到有乘除法的表达式
res = chengchu(chengchu_expression) #调用乘除法的函数计算
re_expression = re_expression.replace(chengchu_expression, str(res)) #吧有乘除法的表达式和计算出来的结果替换
re_expression =chulifuhao(re_expression) #在调用处理符号的函数
# print(re_expression)
continue
break
# 匹配加减法
num = re.findall(r'[+-]?\d+\.?\d*', re_expression)#在没有乘除法的时候,就让匹配加减法,
if len(num) > 1: #如果匹配到的表达式的长度大于1,不过是加法还是减法,都让计算加法。因为float啥结果就是啥
mynum = 0
for i in num:
mynum += float(i)
return mynum
else:
return num[0]