运用正则表达式不使用内置方法实现计算器

#__author__:"Jay guo"
#__date__:2016/9/12
import re
def check(s):
if re.findall("[a-zA-Z]",s):
return "quit"
else:
return s

def format(s):
s = s.replace(" ","")
s = s.replace("++","+")
s = s.replace("+-","-")
s = s.replace("-+","-")
s = s.replace("--","+")
return s

def mul_exc(s):
while True:
ret = re.search("\d+\.?\d*[*/][+-]?\d+\.?\d*", s)
if ret:
x,y = re.split("[*/]",ret.group())
x = float(x)
y = float(y)
if "*" in ret.group():
end = x*y
else:
end = x/y
s = s.replace(ret.group(),str(end))
else:
break
return s

def add_sub(s):
while True:
ret = re.search("\d+\.?\d*[+-]\d+\.?\d*", s)
if ret:
x,y = re.split("[+-]", ret.group())
x = float(x)
y = float(y)
if "+" in ret.group():
end = x + y
else:
end = x - y
s = s.replace(ret.group(), str(end))
else:
break
s = s.replace("(","")
s = s.replace(")","")
return s

def main():
while True:
user = input("PLZ input>>>>: ")
user = check(user)
if user == "quit":
print ("False")
continue
user = format(user)
user = "(" + user + ")"
while True:
ret = re.search("\([^()]*\)",user)
if ret:
ret = ret.group()
ret1 = mul_exc(ret)
ret1 = add_sub(ret1)
user = user.replace(ret,ret1)
user = format(user)
else:
user = add_sub(user)
break
print("结果",user)

main()

转载于:https://www.cnblogs.com/276381225q/p/5864532.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值