python计算器代码,Python实现两款计算器功能示例

本文实例为大家分享了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]

你可能感兴趣的:(python计算器代码)