python手写计算器
说明这个python计算器只是在运行窗口输入数据没有图形化界面,下面是完整代码和每一步的注释,代码还可以进行简化期待大佬的改进:
import re
express = input('>>>')
new_express = express.replace(' ','')
print(1,new_express)
def deal_with(exp):
exp = exp.replace('+-','-')
exp = exp.replace('--','+')
return exp
def cal_exp_son(exp_son):
if '/' in exp_son:
a,b = exp_son.split('/')
return str(float(a)/float(b))
elif '*' in exp_son:
a,b = exp_son.split('*')
return str(float(a)*float(b))
def cal_express_no_bracket(exp):
while True:
exp = exp.strip('()')
ret = re.search('\d+\.?\d*[*/]-?\d+\.?\d*',exp)
if ret:
exp_son = ret.group()
print(3,exp_son)
ret = cal_exp_son(exp_son)
exp = exp.replace(exp_son,ret)
exp = deal_with(exp)
else:
list = re.findall('-?\d+\.?\d*',exp)
sum = 0
for i in list:
sum += float(i)
return str(sum)
while True:
ret = re.search('\([^()]+\)',new_express)
if ret:
express_no_bracket = ret.group()
print(2, express_no_bracket)
ret = cal_express_no_bracket(express_no_bracket)
new_express = new_express.replace(express_no_bracket,ret)
new_express = deal_with(new_express)
print(new_express)
else:
new_express = cal_express_no_bracket(new_express)
print(new_express)
break