python实现计算器功能、输入加减乘除、不是就跳出_python(32)- 模块练习Ⅱ:使用正则表达式实现计算器的功能...

本文介绍了如何使用Python开发一个简单的计算器,该计算器能处理加减乘除运算以及括号内的优先级。通过正则表达式解析用户输入的公式,确保结果与真实计算器一致。文章提供了具体的函数实现,包括mul、div、add等方法,以及主函数caculate的逻辑。
摘要由CSDN通过智能技术生成

开发一个简单的python计算器

实现加减乘除及拓号优先级解析

用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,

必须自己解析里面的(),+,-,*,/符号和公式(不能调用eval等类似功能偷懒实现),运算后得出结果,

结果必须与真实的计算器所得出的结果一致

import re

def func(a):

while True:

if '*' in a:

c = a.split('*')

if '/' in c[0]:

a = div(a)

else:

a = mul(a)

elif '/' in a:

a = div(a)

else:

a = add(a)

return a

def mul(a):

b = re.search(r'\d+\.?\d*\*-?\d+\.?\d*', a)

if b:

b = b.group()

l=b.split("*")

c=float(l[0])*float(l[1])

res = re.sub(r'\d+\.?\d*\*-?\d+\.?\d*', str(c), a,1)

return res

def div(a):

b = re.search(r'\d+\.?\d*/-?\d+\.?\d*', a)

if b:

b = b.group()

l=b.split("/")

c=float(l[0])/float(l[1])

res = re.sub(r'\d+\.?\d*/-?\d+\.?\d*', str(c), a,1)

return res

def add(a):

if '--' in a:

a = a.replace('--', '+')

b = re.findall(r'-?\d+\.?\d*', a) #把负数两个字符看成一个整体

c=0

for i in b:

c+=float(i)

return c

def caculate():

a = ''.join(input('请输入计算公式如1-2*(60-30+(-40/5))等此类:').split())#把输入字符串以空格切片然后在拼接

while True:

if '(' in a:

b = re.search(r'\(([^()]+)\)', a)

if b:

c = b.group()

d = func(c)

a = re.sub(r'\(([^()]+)\)', str(d), a, 1)

else:

print(func(a))

break

caculate()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值