首页 > 编程 > Python > 正文

Python实现两款计算器功能示例

2020-02-16 11:09:53
字体:
来源:转载
供稿:网友

本文实例为大家分享了Python实现计算器功能示例代码,供大家参考,具体内容如下

1.简单计算器

#计算一个表达式的时候,首先肯定是先算括号里面的,再算乘除法,后算加减法import re# 1.去括号def remove_kuohao(expression):  '''  这是一个去除括号的函数  :param expression: 传进来的表达式  :return: 计算后的结果  '''  while True:    ret = re.search(r'/([^(]*?/)',expression) #先利用正则匹配到式子里面的括号    if ret: #如果有括号      re_expression = ret.group() #先把找到的括号group()一下得到      # print(re_expression)      res = jianhua(re_expression.strip('()')) #括号里面有*/-+都不一定,就又定义了一个简化这个表达式的函数      # 如果是乘法就执行乘法运算,如果是除法运算就执行除法等,这样的话就直接调用jianhua这个函数了,当然这个式子      # 有括号,顺便把括号也去了,直接计算去掉括号后的式子      expression = expression.replace(re_expression,str(res)) #把计算出来的结果放回去:就是把原来的括号里的表达式                                  # 替换成现在计算的结果      # print(expression)      continue    break  res = jianhua(expression)  return res#简化算法def jianhua(re_expression):  while True:    # 匹配乘除法    ret = re.search(r'/d+/.*?/d*[*/]/-?/d+/.?/d*', re_expression) #利用正则匹配乘除法    if ret: # 如果匹配到有*或/就执行下面的代码      chengchu_expression = ret.group() #就先group一下得到有乘除法的表达式      res = chengchu(chengchu_expression) #调用乘除法的函数计算      re_expression = re_expression.replace(chengchu_expression, str(res)) #吧有乘除法的表达式和计算出来的结果替换      re_expression =chulifuhao(re_expression) #在调用处理符号的函数      # print(re_expression)      continue    break  # 匹配加减法  num = re.findall(r'[+-]?/d+/.?/d*', re_expression)#在没有乘除法的时候,就让匹配加减法,  if len(num) > 1: #如果匹配到的表达式的长度大于1,不过是加法还是减法,都让计算加法。因为float啥结果就是啥    mynum = 0    for i in num:      mynum += float(i)    return mynum  else:    return num[0]# 3.计算两个数的+-*/def chengchu(expression):  if '*' in expression:    x,y = expression.split('*')    return float(x)*float(y) #返回乘法运算的结果 ,让res接收  if '/' in expression:    x, y = expression.split('/')    return float(x)/float(y)  #返回乘法运算的结果 ,让res接收def chulifuhao(expression):  if '--' in expression:    expression = expression.replace('--','+')  if '++' in expression:    expression = expression.replace('++','+')  if '+-' in expression:    expression = expression.replace('+-','-')  if '-+' in expression:    expression = expression.replace('-+','-')  return expression #返回结果cmd = input('请输入你要计算的表达式:>>')# s = '1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )'new_s = cmd.replace(' ', '') #先将所有的空格去了# print(new_s)ret = remove_kuohao(new_s) #调用去除括号的函数,进行下一步操作print(ret)            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表