python制作一个简易计算器_[python]简易实现计算器calc

#!/usr/bin/python

# -*- coding:utf8 -*-

# author:zlf

import

re,time

#

导入模块

in_str =

'8+3*(2*(16-3)+100/(10/2)+5)+(3+6*2)/3'

#

自定义一个字符串加减乘除表达式

def

base_calc(args):

"""

简易的计算器,主要使用正则练习去除括号

:param

args

为计算表达式,数字和数字之间为加减乘除符号对于本程序(括号两边的符号也不能省

略)

:return

:

返回计算结果并转化成字符串形式

"""

ret =

str

(

eval

(args))

#

使用

eval

处理表达式

return

ret

def

high_calc(inp):

"""

递归遍历去除括号

:param inp:

输入的复杂计算表达式

:return:

返回最终结果

"""""

sp_list=re.split(

'\(([\w\+\-\*\/\.]+)\)'

, inp,

1

)

#

利用正则表达式将最里面的一个括号筛选出

,

注意除法中的

'.'

点这个符号

while

len

(sp_list)==

3

:

#

如果存在括号则正则匹配结果长度为

3

sp_list[

1

]=base_calc(sp_list[

1

])

#

将匹配的结果进行处理并重新赋值替换

new_sp =

''

.join(sp_list)

#

将列表中的元素按字符串拼接成新的字符串表达式

print

(new_sp)

#

调试用

time.sleep(

1

)

#

调试用

high_calc(new_sp)

#

递归调用函数

break

#

递归结束不再递归则执行

break

,通过

break

跳出循环

res = base_calc(inp)

#

将最后的字符串表达式通过上面函数处理得到结果

return

res

#

将结果返回方便下次使用

if

__name__ ==

'__main__'

:

r=high_calc(in_str)

#

函数调用

print

(in_str+

'='

,r)

#

打印结果自定义格式输出

结果如图:

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值