1. #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    # ------------------------------------------------------------
    # ******************** day23_5_Calculator_使用正则表达式计算复杂表达式 *******************
    # ******************** day23_5_Calculator_使用正则表达式计算复杂表达式 *******************
    # =====>>>>>>内容概览
    # =====>>>>>>内容概览
  2.  
  3. # ------------------------------------------------------------
    # # 1、逐个测试
    # # # 测试内容#a = "1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4-3)/ (16-3*2) )"
    # ------------------------------------------------------------
  4.  
  5. # ------------------------------------------------------------
    # # 2、完成对等式的基本计算
    # # # 测试内容#a = "1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4-3)/ (16-3*2) )"
    # ------------------------------------------------------------
  6.  
  7. # ------------------------------------------------------------
    # # 3、实现交互式等式计算
    # # # 测试内容 a = "1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4-3)/ (16-3*2) )"
    # ------------------------------------------------------------
  1.  
  1. # ------------------------------------------------分割线-------------------------------------------------
    # ------------------------------------------------分割线-------------------------------------------------
    # ------------------------------------------------分割线-------------------------------------------------
  1. """
  2. # ------------------------------------------------------------
  3. # # 1、逐个测试
  4. # # # 测试内容#a = "1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4-3)/ (16-3*2) )"
  5. # ------------------------------------------------------------
  6. """
  7. # =====>>>>>>内容概览
  8. # =====>>>>>>内容概览
  9. # import re
  10. #
  11. # a = "1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4-3)/ (16-3*2) )"
  12. # # print(eval(a))
  13. #
  14. # a = a.replace(" ","")
  15. #
  16. # # 取出内容
  17. # re_tmp = re.search("\([^()]+\)", a)
  18. # tmp = eval(re_tmp.group())
  19. # a = a.replace(re_tmp.group(),str(tmp))
  20. # #
  21. # # # # +-连续处理
  22. # # # re_tmp = re.search("(\+-)", a)
  23. # # # a = a.replace(re_tmp.group(),"-")
  24. #
  25. # # a = 1-2*((60-30-8.0*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4-3)/(16-3*2))
  26. # re_tmp = re.search("\([^()]+\)", a)
  27. # tmp = eval(re_tmp.group())
  28. # a = a.replace(re_tmp.group(),str(tmp))
  29. #
  30. # # a = 1-2*((60-30-8.0*173545.88095238098)-(-4-3)/(16-3*2))
  31. # re_tmp = re.search("\([^()]+\)", a)
  32. # tmp = eval(re_tmp.group())
  33. # a = a.replace(re_tmp.group(),str(tmp))
  34. #
  35. # # a = 1-2*(-1388337.0476190478-(-4-3)/(16-3*2))
  36. # re_tmp = re.search("\([^()]+\)", a)
  37. # tmp = eval(re_tmp.group())
  38. # a = a.replace(re_tmp.group(),str(tmp))
  39. #
  40. # # a = 1-2*(-1388337.0476190478--7/(16-3*2))
  41. # re_tmp = re.search("\([^()]+\)", a)
  42. # tmp = eval(re_tmp.group())
  43. # a = a.replace(re_tmp.group(),str(tmp))
  44. #
  45. # # a = 1-2*(-1388337.0476190478--7/10)
  46. # re_tmp = re.search("\([^()]+\)", a)
  47. # tmp = eval(re_tmp.group())
  48. # a = a.replace(re_tmp.group(),str(tmp))
  49. #
  50. # # a = 1-2*-1388336.3476190479
  51. # re_tmp = re.search("\([^()]+\)", a)
  52. # # tmp = eval(re_tmp.group())
  53. # # a = a.replace(re_tmp.group(),str(tmp))
  54. #
  55. # print("re_tmp.group(): ",re_tmp)
  56. # # print("re_tmp.group(): ",re_tmp.group())
  57. # # print(a_2.group())
  58. # print("tmp: ",tmp)
  59. # print("a: ",a)
  60.  
  61. """
  62. # ------------------------------------------------------------
  63. # # 2、完成对等式的基本计算
  64. # # # 测试内容#a = "1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4-3)/ (16-3*2) )"
  65. # ------------------------------------------------------------
  66. """
  67. #
  68. # import re
  69. #
  70. # a = "1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4-3)/ (16-3*2) )"
  71. # a = a.replace(" ","")
  72. # while True:
  73. # a = a.replace(" ","")
  74. # # 取出内容
  75. # re_tmp = re.search("\([^()]+\)", a)
  76. # # if not re_tmp :
  77. # if re_tmp == None:
  78. # a = eval(a)
  79. # break
  80. # tmp = eval(re_tmp.group())
  81. # a = a.replace(re_tmp.group(),str(tmp))
  82. #
  83. # print("re_tmp(): ",re_tmp)
  84. # print("tmp: ",tmp)
  85. # print("a: ",a)
  86. #
  87. #
  88.  
  89. """
  90. # ------------------------------------------------------------
  91. # # 3、实现交互式等式计算
  92. # # # 测试内容 a = "1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4-3)/ (16-3*2) )"
  93. # ------------------------------------------------------------
  94. """
  95. #
  96. # import re
  97. # flag_input = False
  98. # flag_continue = False
  99. # while True:
  100. # while not flag_input:
  101. # a = input("Please enter the expression to be evaluated:")
  102. # # print(re.search("[^0-9\+\-\*/\(\) ]", a))
  103. # if re.search("[^0-90\+\-\*/\(\) ]", a) == None:
  104. # # print("输入正确")
  105. # flag_input = True
  106. # # 去空格
  107. # a = a.replace(" ", "")
  108. # break
  109. # else:
  110. # print("输入错误")
  111. # continue
  112. #
  113. # # 取出内容
  114. # re_tmp = re.search("\([^()]+\)", a)
  115. # # None说明是最后一次等式
  116. # if re_tmp == None:
  117. # a = eval(a)
  118. # print("计算结果: ", a)
  119. # if input("If continue,please input continue; And input any world to exit!") =="continue":
  120. # flag_input = False # 开启输入标志
  121. # continue
  122. # else:
  123. # break
  124. # tmp = eval(re_tmp.group())
  125. # a = a.replace(re_tmp.group(),str(tmp))
  126. #

  

  1.  
  1.  

day23_5_练习_Calculator_使用正则表达式计算复杂表达式的更多相关文章

  1. 实现Linux下dc的功能,计算后缀表达式的值

    提交测试截图和码云练习项目链接,实现Linux下dc的功能,计算后缀表达式的值 -将运算符写在两个操作数之后的表达式称为"后缀表达式",如上面的中缀表达式可转换为后缀表达式1 2 ...

  2. 计算后缀表达式的过程(C#)

    计算后缀表达式的过程是一个很好玩的过程,而且很简单哦!这里呢,有个计算的技巧,就是:遇到数字直接入栈,遇到运算符就计算! 后缀表达式也叫逆波兰表达式,求值过程可以用到栈来辅助存储: 假定待求值的后缀表 ...

  3. C++做四则运算的MFC计算器(二)栈转换和计算后缀表达式

    上篇写了MFC界面搭建,这篇就写实现计算.涉及到数据结构,对新手很不友好. 虽然是MFC程序,但是能灵活地分离后台代码,自行构建控制台程序. 上篇文章链接:C++做四则运算的MFC计算器(一)MFC界 ...

  4. 【Weiss】【第03章】练习3.19:计算后缀表达式

    [练习3.19] 编写一个程序计算后缀表达式的值. Answer: 计算的方法书上说得很明白了,看代码行,没写错误检测[因为懒]. 测试代码: #include <iostream> #i ...

  5. C# 正则表达式 和 JAVA表达式是想通的

    正则表达式语法 也许有人会说,现在需要正则表达式去验证什么的话,直接在网上找不久一大片吗?还需要学什么啊! 是的,现在在网上找确实是一找一大片,但是,有时候我们也遇到这样的情况,就是我们在网上找的复制 ...

  6. NYOJ--128--前缀式计算(表达式求值)

    前缀式计算 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 先说明一下什么是中缀式: 如2+(3+4)*5这种我们最常见的式子就是中缀式. 而把中缀式按运算顺序加上括 ...

  7. LeetCode_p150_逆波兰表达式计算/后缀表达式计算

    有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话说,表达式总会得出有效数值且不存在除 ...

  8. 栈的应用实例——计算后缀表达式

    用户输入一个后缀表达式,程序计算该后缀表达式的值并输出结果: /* postfix_expression.c */ #include "stack.h" #include < ...

  9. 重温C语言(1)----计算算术表达式的值

    <C程序设计语言>练习题 5-10 编写程序 expr,计算从命令行输入的逆波兰表达式的值,其中每个运算符或操作数用一个单独的参数表示.例如,命令 expr 2 3 4 + * 计算表达式 ...

随机推荐

  1. final、finally和finalized的区别?

    (1)final:被final修饰的类,不被能继承:被final修饰的方法,不能被重写:被fianl修饰的量,为常量,只能被赋值一次: (2)finally:异常处理,和try.catch结合使用,可 ...

  2. ubuntu phpize 安裝

    php 版本 7.2,所以安裝 php7.2的 sudo apt-get install php7.2-dev 參考 Is is possible to install phpize for PHP7 ...

  3. python编程学习day03

    1.文件操作 (1)打开文件 f = open ("文件名称",mode='' ",encoding="utf-8") mode=操作方式 encod ...

  4. 【JZOJ3294】【BZOJ4417】【luoguP3990】超级跳马

    description analysis 矩阵乘法好题 最朴素的\(10pts\)的\(f[i][j]\)容易\(DP\),但是是\(O(nm^2)\)的复杂度 于是把\(10\)分的\(DP\)写出 ...

  5. Dart编程数字Number

    Dart数字可以分为: int - 任意大小的整数. int 数据类型用于表示整数. double -64位(双精度)浮点数,由IEEE 754标准规定. 在 double 数据类型用于表示小数 in ...

  6. 全球首个开放应用模型 OAM 开源

    业界要闻 全球首个开放应用模型 OAM 开源 2019 年 10 月 17 日,阿里巴巴合伙人.阿里云智能基础产品事业部总经理蒋江伟(花名:小邪)在 Qcon 上海重磅宣布,阿里云与微软联合推出开放应 ...

  7. Java中的线程Thread方法之---interrupt()

    前几篇都介绍了Thread中的几个方法,相信大家都发现一个相似点,那就是sleep,join,wait这样的阻塞方法都必须捕获一个InterruptedException异常,顾名思义就是一个线程中断 ...

  8. bzoj1002题解

    [题意分析] 给你一张特殊的,被称为“轮状基”的无向图,求其生成树个数. [解题思路] 引理: 基尔霍夫矩阵: 基尔霍夫矩阵=度数矩阵-邻接矩阵(邻接矩阵权=两点连边数) Matrix-Tree定理: ...

  9. paper 16 : 计算机视觉领域博客资源

    这是收录的图像视觉领域的博客资源的第一部分,包含:中国内地.香港.台湾 这些名人大家一般都熟悉,本文仅收录了包含较多资料的个人博客,并且有不少更新,还有些名人由于分享的paper.code或者数据集不 ...

  10. 秒懂机器学习---分类回归树CART

    秒懂机器学习---分类回归树CART 一.总结 一句话总结: 用决策树来模拟分类和预测,那些人还真是聪明:其实也还好吧,都精通的话想一想,混一混就好了 用决策树模拟分类和预测的过程:就是对集合进行归类 ...