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 + * 计算表达式 ...
随机推荐
- 笔记43 Spring Security简介
基于Spittr应用 一.Spring Security简介 Spring Security是为基于Spring的应用程序提供声明式安全保护的安全 性框架.Spring Security提供了完整的安 ...
- 发现一个新的远程软件 gotohttp
之前直到远程桌面连接是TeamViewer 替换的原因是: 被控制端版本 11.0.x (很久以前安装的),而我本地的Teamviewer是 14.x, 去连接,好像提示被控制端的版本太低:本地使用 ...
- SpringBoot 之 Mybatis 逆向工程
今天给大家介绍在 spring- boot 项目中如何使用 maven 插件逆向工程生成 Mybatis 代码. pom.xml 添加依赖和插件 <dependency> <grou ...
- springboot启动时过滤不需要注入的类
在springbootApplication启动类上加入注解 @ComponentScan(excludeFilters = @ComponentScan.Filter(type = FilterTy ...
- c++ TCP 获取客户端IP
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<errno.h> #i ...
- kafka集群安装和使用
kafka(1)kafka是一个分布式的消息缓存系统(2)kafka集群中的服务器都叫做broker(3)kafka有两类客户端,一个叫做producer(消息生产者),一类叫做consumer(消息 ...
- Android 防止多次点击提交数据
package com.test1.test; import android.app.Activity; import android.os.Bundle; import android.view.V ...
- WinDbg解决BHO不加载
昨天zhengwei同学说他机器上的一个BHO不能正常加载,我把BHO的代码拿过来,在我的两台机器上都验证了一下,一台是Win7+IE8的环境,一台是XP+IE7的环境,都能正常加载.zhengwei ...
- 网页布局WEB标准的HTML结构化
您正在学习WEB标准CSS网页布局吗?是不是还不能完全掌握纯CSS布局?通常有两种需要您特别注意: 第一种可能是你还没有理解CSS处理页面的原理.在你考虑你的页面整体表现效果前,你应当先考虑内容的语义 ...
- 如何使用Hive集成Solr?
(一)Hive+Solr简介 Hive作为Hadoop生态系统里面离线的数据仓库,可以非常方便的使用SQL的方式来离线分析海量的历史数据,并根据分析的结果,来干一些其他的事情,如报表统计查询等. So ...