zoukankan      html  css  js  c++  java
  • python实现计算器功能

     1 import re
     2 
     3 
     4 def strip_operate(exp):    # 合并多余的操作符
     5     exp = exp.replace("+-", "-")
     6     exp = exp.replace("--", "+")
     7     return exp  
     8 
     9 
    10 def cal_exp_son(exp_son):    # 计算两数的乘除
    11     if "/" in exp_son:
    12         a, b = exp_son.split("/")
    13         return str(float(a)/float(b))
    14     elif "*" in exp_son:
    15         a, b = exp_son.split("*")
    16         return str(float(a)*float(b))
    17 
    18 
    19 def cal_no_bracket(exp):    # 计算一个里面已经没有括号的式子
    20     exp = exp.strip("()")
    21     while True:
    22         ret1 = re.search(r"d+.?d*[/*]-?d+.?d*", exp)
    23         if ret1:     # 先乘除
    24             exp_son = ret1.group()
    25             ret2 =cal_exp_son(exp_son)
    26             exp = exp.replace(exp_son, ret2)
    27             exp = strip_operate(exp)
    28         else:      # 后加减
    29             ret4 = re.findall(r"-?d+.?d*", exp)
    30             sum1 = 0
    31             for i in ret4:
    32                 sum1 += float(i)
    33             return str(sum1)
    34 
    35 
    36 def main_1(express):
    37     while True:
    38         ret = re.search(r"([^()]+)", express)
    39         if ret:
    40             express_no_bracket = ret.group()    
    41             ret3 = cal_no_bracket(express_no_bracket)
    42             express = express.replace(express_no_bracket, ret3)
    43             express = strip_operate(express)
    44         else:
    45             ret4 = cal_no_bracket(express)
    46             return ret4
    47 
    48 
    49 express = '1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )'
    50 express = express.replace(" ", "")
    51 ret5 = main_1(express)
    52 print(ret5)
  • 相关阅读:
    git 账号密码
    sql server 备份
    计算经纬度的两点之间的距离
    redis 安装
    webapi 可空参数
    Asp.Net MVC4 使用Unity 实现依赖注入
    sublime主题推荐
    分解质数因子
    如何在sublime+chrome中调试php代码?
    php的mysql语句里变量加不加单引号问题
  • 原文地址:https://www.cnblogs.com/nxrs/p/10425488.html
Copyright © 2011-2022 走看看