zoukankan      html  css  js  c++  java
  • Python__计算器

     1 #Author wangmengzhu
     2 import re
     3 def cheng_and_chu(arg):
     4     val = arg[0]
     5     mch = re.search('d+.*d*[*/]+[+-]?d+.*d*', val)
     6     if not mch:
     7         return
     8     content = re.search('d+.*d*[*/]+[+-]?d+.*d*', val).group()
     9     if len(content.split('*'))>1:
    10         n1,n2 = content.split('*')
    11         value = float(n1) * float(n2)
    12     else:
    13         n1,n2 = content.split('/')
    14         value = float(n1) / float(n2)
    15     qianzhui,houzhui = re.split('d+.*d*[*/]+[+-]?d+.*d*', val, 1)
    16     new_str = "%s%s%s"%(qianzhui,value,houzhui)
    17     arg[0] = new_str
    18     cheng_and_chu(arg)
    19 
    20 def jia_and_jian(arg):
    21     while True:
    22         if arg[0].__contains__('+-') or arg[0].__contains__("++") or arg[0].__contains__('-+') or arg[0].__contains__("--"):
    23             arg[0] = arg[0].replace('+-','-')
    24             arg[0] = arg[0].replace('++','+')
    25             arg[0] = arg[0].replace('-+','-')
    26             arg[0] = arg[0].replace('--','+')
    27         else:
    28             break
    29     if arg[0].startswith('-'):
    30         arg[1] += 1
    31         arg[0] = arg[0].replace('-','&')
    32         arg[0] = arg[0].replace('+','-')
    33         arg[0] = arg[0].replace('&','+')
    34         arg[0] = arg[0][1:]
    35     val = arg[0]
    36     mch = re.search('d+.*d*[+-]{1}d+.*d*', val)
    37     if not mch:
    38         return
    39     content = re.search('d+.*d*[+-]{1}d+.*d*', val).group()
    40     if len(content.split('+'))>1:
    41         n1, n2 = content.split('+')
    42         value = float(n1) + float(n2)
    43     else:
    44         n1, n2 = content.split('-')
    45         value = float(n1) - float(n2)
    46     before, after = re.split('d+.*d*[+-]{1}d+.*d*', val, 1)
    47     new_str = "%s%s%s" % (before,value,after)
    48     arg[0] = new_str
    49     jia_and_jian(arg)
    50 
    51 def cal(sr):
    52     new_sr = [sr.strip('()'),0]
    53     cheng_and_chu(new_sr)
    54     jia_and_jian(new_sr)
    55     res = float(new_sr[0])
    56     return res
    57 
    58 def basket(sr):
    59     flag = True
    60     while flag:
    61         m = re.search("([^()]+)",sr)
    62         if m:
    63             sub_sr = m.group()
    64             sub_res = cal(sub_sr)
    65             sr = sr.replace(m.group(),str(sub_res))
    66         else:
    67             print('结果:',cal(sr))
    68             flag = False
    69 
    70 if __name__ == "__main__":
    71     print("----------欢迎使用计算器----------")
    72     while True:
    73         flag = True
    74         sr = input("输入要计算的函数(q:退出):")
    75         sr = re.sub("s*","",sr)
    76         error = re.search('[0-9*/-+]',sr)
    77         while flag:
    78             if not error:
    79                 print("输入有误")
    80                 sr = input("请重新输入要计算的函数(q:退出):")
    81             else:
    82                 if error.group() == 'q':
    83                     exit("感谢使用,再见")
    84                 basket(sr)
    85                 flag = False
  • 相关阅读:
    go语言从例子开始之Example22.协程之通道
    go语言从例子开始之Example21.协程
    go语言从例子开始之Example20.错误处理
    go语言从例子开始之Example19.接口
    级联复制改成主从复制
    一主二从改成级联复制架构步骤
    mysql8.0 备分常用命令
    mysql8基于gtid导出导入搭建主从
    MySQL 8.0 配置mysql_native_password身份验证插件的密码
    mysql_config_editor 安全登录方式
  • 原文地址:https://www.cnblogs.com/wangmengzhu/p/7325812.html
Copyright © 2011-2022 走看看