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)

      

  • 相关阅读:
    Python实现常用的数据结构
    Python实现一些常用排序算法
    python实现简单排序算法
    Django学习-25-图片验证码实例
    Django学习-24-Ajax
    Django学习-23-ModelForm
    Django学习-22-Form
    Django学习-21-表关系参数
    Django学习-20-信号
    用"再生龙"Clonezilla 来克隆Linux系统
  • 原文地址:https://www.cnblogs.com/Leaders543/p/11724141.html
Copyright © 2011-2022 走看看