首页 > 编程语言 > 详细

python 简易四则运算计算器

时间:2019-10-28 00:20:29      阅读:116      评论:0      收藏:0      [点我收藏+]
# c=a if 成立就用c=a表达式 else b   , 不成立c=b
import re

s_input="1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )"

def Judging_Conformity(x):#判断式子里面是否只有数字和*/+-()空格或者有**、//、+*、*.、等错误形式
flag=True
if re.findall("[^*/+\-() \d]|[*/+\-.]+[*/+\-.]+|\([*/+]+|\.\d*\.",x):
flag=False
return flag
def format_replace(x):#格式化去掉空格
x=x.replace(" ","")
return add_sub(remove_md(x))
def add_sub(x):
x=re.sub("\+-|-\+","-",x)
x=re.sub("--|\+\+","+",x)
if not re.findall("[\d]+[+\-][\d]+",x):
if x[0]=="+":#去掉最后在数字前面的+
x=x[1:]
return x
else:
k=re.search("-?[\d.]+[+-][\d.]+",x).group()
k3=k
if x[0]=="-":#如果开头有-号
k=k[1:]
k2=float("-"+k.split("+")[0])+float(k.split("+")[1]) if "+" in k else float("-"+k.split("-")[0])+float(k.split("-")[1])
else:
k2=float(k.split("+")[0])+float(k.split("+")[1]) if "+" in k else float(k.split("-")[0]) - float(k.split("-")[1])
x=x.replace(k3,str(k2))
return add_sub(x)


def Multiplication_division(x):#乘除法
ret=float(x.split("*")[0])*float(x.split("*")[1]) if "*" in x else float(x.split("/")[0])/float(x.split("/")[1])
return ret
def remove_md(x):
if not re.findall("[*/]",x):
return x
else:
k=re.search("-?[\d.]+[*/]-?[\d.]+",x).group()
x=x.replace(k,"+"+ str(Multiplication_division(k))) if len(re.findall("-",k))==2 else x.replace(k,str(Multiplication_division(k)))
return remove_md(x)
def bin_Calculator(x):#启动计算器
if not re.search("\(.*\)",x):#如果没发现括号直接执行格式化然后加减乘除
return format_replace(x)
k=re.search("\([^()]+\)",x).group()
x=x.replace(k,str(format_replace(k[1:len(k)-1])))
return bin_Calculator(x)
def star_calculator(x):
x=x.replace(" ","")#去掉空格
if Judging_Conformity(x):#看是否符合输入标准.
return bin_Calculator(x)
else:
print("输入格式错误!")
print("原式子:{}\n正确答案:{}\n计算答案:{}".format(s_input,eval(s_input),star_calculator(s_input)))

python 简易四则运算计算器

原文:https://www.cnblogs.com/master-xue/p/11749695.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!