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 + * 计算表达式 ...
随机推荐
- Simple example of use of __setstate__ and __getstate__
class Foo(object): def __init__(self, val=2): self.val = val def __getstate__(self): print ("I' ...
- notepad++去换行(简单、快捷)
文本处理问题 这个方式可以快捷处理, 不用Linux命令, linux 与window之间的文件转换很烦人, 这个方法可以处理
- magento 跳转
Magento: Redirect functions 原文:http://blog.chapagain.com.np/magento-redirect-functions/ The redirect ...
- GetWindowLong
函数功能:该函数获得有关指定窗口的信息,函数也获得在额外窗口内存中指定偏移位地址的32位度整型值. 函数原型:LONG GetWindowLong(HWND hWnd,int nlndex): 参数: ...
- delphi 注册表
Delphi中定义了一个Tregistry类,通过使用这个类中封装的很多有关对注册表操作的方法和属性可以完成对注册表的操作.1. 在注册表中创建一个新的关键字Tregistry类中有一个CreateK ...
- NX二次开发-获取WCS标识UF_CSYS_ask_wcs
NX9+VS2012 #include <uf.h> #include <uf_csys.h> UF_initialize(); //获取WCS标识 tag_t WcsId = ...
- 安装zabbix需求环境
yum install gcc gcc-c++ make mysql-server mysql-devel libcurl-devel net-snmp-devel php php-ldap php- ...
- Python-爬虫-requests库用语post登录
requests库很强大,支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的URL和POST数据自动编码. 可以发送无参数的get请求, ...
- AdaBoost笔记之通俗易懂原理介绍
转自:https://blog.csdn.net/px_528/article/details/72963977 写在前面 说到Adaboost,公式与代码网上到处都有,<统计学习方法>里 ...
- HSF简单实现记录(基于 Pandora Boot 开发)
文章目录 声明 注意 安装轻量配置中心 启动轻量配置中心 配置 hosts 结果验证 开发工具准备 在 Maven 中配置 EDAS 的私服地址 验证配置是否成功 开发 demo下载 服务注册与发现 ...