day23_5_练习_Calculator_使用正则表达式计算复杂表达式
- #!/usr/bin/env python
# -*- coding:utf-8 -*-
# ------------------------------------------------------------
# ******************** day23_5_Calculator_使用正则表达式计算复杂表达式 *******************
# ******************** day23_5_Calculator_使用正则表达式计算复杂表达式 *******************
# =====>>>>>>内容概览
# =====>>>>>>内容概览- # ------------------------------------------------------------
# # 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) )"
# ------------------------------------------------------------- # ------------------------------------------------------------
# # 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) )"
# ------------------------------------------------------------- # ------------------------------------------------------------
# # 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、逐个测试
- # # # 测试内容#a = "1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4-3)/ (16-3*2) )"
- # ------------------------------------------------------------
- """
- # =====>>>>>>内容概览
- # =====>>>>>>内容概览
- # import re
- #
- # a = "1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4-3)/ (16-3*2) )"
- # # print(eval(a))
- #
- # a = a.replace(" ","")
- #
- # # 取出内容
- # re_tmp = re.search("\([^()]+\)", a)
- # tmp = eval(re_tmp.group())
- # a = a.replace(re_tmp.group(),str(tmp))
- # #
- # # # # +-连续处理
- # # # re_tmp = re.search("(\+-)", a)
- # # # a = a.replace(re_tmp.group(),"-")
- #
- # # a = 1-2*((60-30-8.0*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4-3)/(16-3*2))
- # re_tmp = re.search("\([^()]+\)", a)
- # tmp = eval(re_tmp.group())
- # a = a.replace(re_tmp.group(),str(tmp))
- #
- # # a = 1-2*((60-30-8.0*173545.88095238098)-(-4-3)/(16-3*2))
- # re_tmp = re.search("\([^()]+\)", a)
- # tmp = eval(re_tmp.group())
- # a = a.replace(re_tmp.group(),str(tmp))
- #
- # # a = 1-2*(-1388337.0476190478-(-4-3)/(16-3*2))
- # re_tmp = re.search("\([^()]+\)", a)
- # tmp = eval(re_tmp.group())
- # a = a.replace(re_tmp.group(),str(tmp))
- #
- # # a = 1-2*(-1388337.0476190478--7/(16-3*2))
- # re_tmp = re.search("\([^()]+\)", a)
- # tmp = eval(re_tmp.group())
- # a = a.replace(re_tmp.group(),str(tmp))
- #
- # # a = 1-2*(-1388337.0476190478--7/10)
- # re_tmp = re.search("\([^()]+\)", a)
- # tmp = eval(re_tmp.group())
- # a = a.replace(re_tmp.group(),str(tmp))
- #
- # # a = 1-2*-1388336.3476190479
- # re_tmp = re.search("\([^()]+\)", a)
- # # tmp = eval(re_tmp.group())
- # # a = a.replace(re_tmp.group(),str(tmp))
- #
- # print("re_tmp.group(): ",re_tmp)
- # # print("re_tmp.group(): ",re_tmp.group())
- # # print(a_2.group())
- # print("tmp: ",tmp)
- # print("a: ",a)
- """
- # ------------------------------------------------------------
- # # 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) )"
- # ------------------------------------------------------------
- """
- #
- # import re
- #
- # a = "1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4-3)/ (16-3*2) )"
- # a = a.replace(" ","")
- # while True:
- # a = a.replace(" ","")
- # # 取出内容
- # re_tmp = re.search("\([^()]+\)", a)
- # # if not re_tmp :
- # if re_tmp == None:
- # a = eval(a)
- # break
- # tmp = eval(re_tmp.group())
- # a = a.replace(re_tmp.group(),str(tmp))
- #
- # print("re_tmp(): ",re_tmp)
- # print("tmp: ",tmp)
- # print("a: ",a)
- #
- #
- """
- # ------------------------------------------------------------
- # # 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) )"
- # ------------------------------------------------------------
- """
- #
- # import re
- # flag_input = False
- # flag_continue = False
- # while True:
- # while not flag_input:
- # a = input("Please enter the expression to be evaluated:")
- # # print(re.search("[^0-9\+\-\*/\(\) ]", a))
- # if re.search("[^0-90\+\-\*/\(\) ]", a) == None:
- # # print("输入正确")
- # flag_input = True
- # # 去空格
- # a = a.replace(" ", "")
- # break
- # else:
- # print("输入错误")
- # continue
- #
- # # 取出内容
- # re_tmp = re.search("\([^()]+\)", a)
- # # None说明是最后一次等式
- # if re_tmp == None:
- # a = eval(a)
- # print("计算结果: ", a)
- # if input("If continue,please input continue; And input any world to exit!") =="continue":
- # flag_input = False # 开启输入标志
- # continue
- # else:
- # break
- # tmp = eval(re_tmp.group())
- # a = a.replace(re_tmp.group(),str(tmp))
- #
day23_5_练习_Calculator_使用正则表达式计算复杂表达式的更多相关文章
- 实现Linux下dc的功能,计算后缀表达式的值
提交测试截图和码云练习项目链接,实现Linux下dc的功能,计算后缀表达式的值 -将运算符写在两个操作数之后的表达式称为"后缀表达式",如上面的中缀表达式可转换为后缀表达式1 2 ...
- 计算后缀表达式的过程(C#)
计算后缀表达式的过程是一个很好玩的过程,而且很简单哦!这里呢,有个计算的技巧,就是:遇到数字直接入栈,遇到运算符就计算! 后缀表达式也叫逆波兰表达式,求值过程可以用到栈来辅助存储: 假定待求值的后缀表 ...
- C++做四则运算的MFC计算器(二)栈转换和计算后缀表达式
上篇写了MFC界面搭建,这篇就写实现计算.涉及到数据结构,对新手很不友好. 虽然是MFC程序,但是能灵活地分离后台代码,自行构建控制台程序. 上篇文章链接:C++做四则运算的MFC计算器(一)MFC界 ...
- 【Weiss】【第03章】练习3.19:计算后缀表达式
[练习3.19] 编写一个程序计算后缀表达式的值. Answer: 计算的方法书上说得很明白了,看代码行,没写错误检测[因为懒]. 测试代码: #include <iostream> #i ...
- C# 正则表达式 和 JAVA表达式是想通的
正则表达式语法 也许有人会说,现在需要正则表达式去验证什么的话,直接在网上找不久一大片吗?还需要学什么啊! 是的,现在在网上找确实是一找一大片,但是,有时候我们也遇到这样的情况,就是我们在网上找的复制 ...
- NYOJ--128--前缀式计算(表达式求值)
前缀式计算 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 先说明一下什么是中缀式: 如2+(3+4)*5这种我们最常见的式子就是中缀式. 而把中缀式按运算顺序加上括 ...
- LeetCode_p150_逆波兰表达式计算/后缀表达式计算
有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话说,表达式总会得出有效数值且不存在除 ...
- 栈的应用实例——计算后缀表达式
用户输入一个后缀表达式,程序计算该后缀表达式的值并输出结果: /* postfix_expression.c */ #include "stack.h" #include < ...
- 重温C语言(1)----计算算术表达式的值
<C程序设计语言>练习题 5-10 编写程序 expr,计算从命令行输入的逆波兰表达式的值,其中每个运算符或操作数用一个单独的参数表示.例如,命令 expr 2 3 4 + * 计算表达式 ...
随机推荐
- final、finally和finalized的区别?
(1)final:被final修饰的类,不被能继承:被final修饰的方法,不能被重写:被fianl修饰的量,为常量,只能被赋值一次: (2)finally:异常处理,和try.catch结合使用,可 ...
- ubuntu phpize 安裝
php 版本 7.2,所以安裝 php7.2的 sudo apt-get install php7.2-dev 參考 Is is possible to install phpize for PHP7 ...
- python编程学习day03
1.文件操作 (1)打开文件 f = open ("文件名称",mode='' ",encoding="utf-8") mode=操作方式 encod ...
- 【JZOJ3294】【BZOJ4417】【luoguP3990】超级跳马
description analysis 矩阵乘法好题 最朴素的\(10pts\)的\(f[i][j]\)容易\(DP\),但是是\(O(nm^2)\)的复杂度 于是把\(10\)分的\(DP\)写出 ...
- Dart编程数字Number
Dart数字可以分为: int - 任意大小的整数. int 数据类型用于表示整数. double -64位(双精度)浮点数,由IEEE 754标准规定. 在 double 数据类型用于表示小数 in ...
- 全球首个开放应用模型 OAM 开源
业界要闻 全球首个开放应用模型 OAM 开源 2019 年 10 月 17 日,阿里巴巴合伙人.阿里云智能基础产品事业部总经理蒋江伟(花名:小邪)在 Qcon 上海重磅宣布,阿里云与微软联合推出开放应 ...
- Java中的线程Thread方法之---interrupt()
前几篇都介绍了Thread中的几个方法,相信大家都发现一个相似点,那就是sleep,join,wait这样的阻塞方法都必须捕获一个InterruptedException异常,顾名思义就是一个线程中断 ...
- bzoj1002题解
[题意分析] 给你一张特殊的,被称为“轮状基”的无向图,求其生成树个数. [解题思路] 引理: 基尔霍夫矩阵: 基尔霍夫矩阵=度数矩阵-邻接矩阵(邻接矩阵权=两点连边数) Matrix-Tree定理: ...
- paper 16 : 计算机视觉领域博客资源
这是收录的图像视觉领域的博客资源的第一部分,包含:中国内地.香港.台湾 这些名人大家一般都熟悉,本文仅收录了包含较多资料的个人博客,并且有不少更新,还有些名人由于分享的paper.code或者数据集不 ...
- 秒懂机器学习---分类回归树CART
秒懂机器学习---分类回归树CART 一.总结 一句话总结: 用决策树来模拟分类和预测,那些人还真是聪明:其实也还好吧,都精通的话想一想,混一混就好了 用决策树模拟分类和预测的过程:就是对集合进行归类 ...