zoukankan      html  css  js  c++  java
  • calc

    import re
    def AP(formula):
      formula = formula.replace('+-','-')
      formula = formula.replace('-+','-')
      formula = formula.replace('--','+')
      return formula
    def compute_MD(formula):   ope = re.findall('[*/]',formula)   mun = re.split('[*/]',formula)   for index,i in enumerate(ope):     mun[index]=float(mun[index])   while ope!=[]:     if ope[index] == '*':       mun[index] *= float(mun[index+1])
    del mun[index+1],ope[index]   elif ope[index] == '/':   mun[index] /= float(mun[index+1])
    del mun[index+1],ope[index]   return mun[index]
    def compute_AP(f1,f2):   for index,i in enumerate(f1):     f2[index] = float(f2[index])   while len(f1) > 0:   if f1[index] == '-':     f2[index]-=float(f2[index+1])
        del f2[index+1],f1[index]   else:     f2[index] += float(f2[index + 1])     del f2[index +1], f1[index]   return f2[index]
    def compute(formula):   formula = AP(formula)   ope = re.findall('[+-]',formula)   mun = re.split('[+-]',formula)   for index,i in enumerate(mun):     if mun[index] == '':     mun[index+1] = '-' + mun[index + 1]   del mun[index],ope[index]   while mun[index].endswith('/') or mun[index].endswith('*'):     mun[index+1] = AP('-' + mun[index]+mun[index+1])     del mun[index],ope[index]   for index,i in enumerate(mun):     if i.find('*')>0 or i.find('/')>0 :       mun[index] = compute_MD(i)   if ope == []:     return mun[index]   return compute_AP(ope,mun)
    def calc(formula):   parenthesise_flag = True   while parenthesise_flag:     formula = formula.replace(' ','')     m = re.search('([^()]+)',formula)     if m:       m2 = str(compute(m.group().strip('()')))       formula = formula.replace(m.group(),m2)     else:       formula = compute(formula)       parenthesise_flag = False     return formula
    if __name__ == '__main__': res = calc(''' 公式内容 ''') print('结果:',res)

      

  • 相关阅读:
    sqlserver日期推算
    bcp sqlserver 导入 导出 数据
    sqlserver 2008 序列号
    mysql 学习总结
    使用Eclipse对JUnit测试函数进行Debug时断点无效问题
    ORACLE死锁故障排查的一般性手法的备忘录
    BigDecimal进行Format时产生的[java.lang.IllegalArgumentException: Digits < 0]异常
    Java中keySet()返回值的排序问题
    严蔚敏数据结构视频教程下载
    C、C++经典书籍
  • 原文地址:https://www.cnblogs.com/Leaders543/p/11724141.html
Copyright © 2011-2022 走看看