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 + * 计算表达式 ...
随机推荐
- Java.util.Map的实现类有那些?
1.HashMap 2.Hashtable 3.LinkedHashMap 4.TreeMap
- ajax--getJSON
penson.json [ { "name":"张三", "age":25, "sex":"男", ...
- 线程池 一 ForkJoinPool
java.util.concurrent public class ForkJoinPool extends AbstractExecutorService public abstract class ...
- bzoj1016题解
[解题思路] Kruskal的拓展. 可以先对边排序,进行一次Kruskal,判断是否可行,并计算出每种权值的边需要多少条. 然后暴力统计每种权值可行的方案数,根据乘法原理乘起来即可.复杂度o(210 ...
- Delphi 2010下使用sqlitesimpledelphi连接SQLite数据库及中文乱码问题的解决
应女朋友的要求,要写一款销售管理的软件.用于管理服装店每天的销售记录,已及管理服装店的客户,并对客户进行生日提醒 因为之前使用C#写过一款家庭管理软件,主要是自己用,所以使用了服务器型数据库MySQL ...
- LUOGU P1501 [国家集训队]Tree II (lct)
传送门 解题思路 \(lct\),比较模板的一道题,路径加和乘的维护标记与线段树\(2\)差不多,然后剩下就没啥了.但调了我将近一下午.. 代码 #include<iostream> #i ...
- HDU6447 YJJ's Salesman-2018CCPC网络赛-线段树求区间最值+离散化+dp
目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:Portal传送门 原题目描述在最下面. 1e5个点,问 ...
- c语言NULL和0区别及NULL详解
先看下面一段代码输出什么: #include<stdo.h> int main() { int *p=NULL; printf("%s",p); } 输出<n ...
- Matlab求三重积分
Matlab求三重积分 求 \(\int_0^1 \int_0^1 \int_0^1 sin(\pi x_1 x_2 x_3) dx_1 dx_2 dx_3\) 代码是: triplequad(@(x ...
- nagios监控实用教程
nagios监控实用教程 Nagios作为开源网络监视工具,它不但可以有效的监控内存.流量.数据库使用情况.它还可以Windows.Linux主机状态.本专题收录了有关Nagios监控相关文章,供大家 ...