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 SE(2)
1.this的两种用法:(1)当成员变量和局部变量重名是,可以用关键字this来区分 .this代表对象,代表的是this所在函数所属对象的引用(哪个对象调用了this所在的函数,this就代表哪个对 ...
- linux 定时执行sql
说明: 放执行脚本的路径是: /home/vagrant/ssh 文件夹结构: /home |_ vagrant |__ ssh |___ move_order_old_data.sh |___ mo ...
- Deployment的使用
RC和RS的功能基本上是差不多的,唯一的区别就是RS支持集合的selector. RC|RS是Kubernetes的一个核心概念,当我们把应用部署到集群之后,需要保证应用能够持续稳定的运行,RC|RS ...
- php 引入其他文件中的变量
在php的开发过程中,如果所有的代码都写在同一个文件中的话,那么文件中的代码数量是否太多了,一来不便维护,二来对于编辑器也是个负担include("class0.php");在ph ...
- ETL工具-Kattle:查询 HTTP/WebService
发送HTTP POST请求,获取返回内容. 发送HTTP GET请求,获取返回内容,可以从前面获取URL.参数名.参数值 通过Restful获取数据 通过webService获取数据 HTTP ...
- PHP headers_sent() 函数
定义和用法 headers_sent() 函数检查 HTTP 报头是否发送/已发送到何处. 如果报头已发送,该函数返回 TRUE,否则返回 FALSE. 语法 headers_sent(file,li ...
- bcc-tools工具之profile
profile是用于追踪程序执行调用流程的工具,类似于perf中的-g指令 相比perf -g而言,profile功能化更加细分,可以根据需要选择追踪层面,例如-U(用户要调用流程) -K (内核态调 ...
- GDI+在Delphi程序的应用 Photoshop色相饱和度明度功能
本文用GDI+实现Photoshop色相/饱和度/明度功能,参照我的其它有关GDI+在 Delphi程序的应用的文章,代码也可供TBitmap使用. 有些人不喜欢,或者不太懂Delphi的BASM代码 ...
- NOIp2018集训test-10-4/test-10-5 (联考四day1/day2)
这个day1稍微有点毒瘤吧?? DAY1 排列 以前总是把day1t1想太复杂了翻车,差不多往正解的方向想了一下感觉不可能这么复杂这可是noipday1t1啊一定有非常简单的方法然后翻车了?? 题目转 ...
- NX二次开发-UFUN输入特征TAG,获取特征所有表达式TAG和个数UF_MODL_ask_exps_of_feature
NX9+VS2012 #include <uf.h> #include <uf_modl.h> UF_initialize(); //创建块 UF_FEATURE_SIGN S ...