python题库刷题训练软件_刷题 -- python计算器练习题
假设python只能简单处理+-/,不能处理括号。练习处理。练习正则。
网上有些无法很好处理负号,如下情况。暂未处理括号数字间缺少等情况。
(-1+(2-5(-1))(2-5))
-1+(2-5)*(2-5)
#/usr/bin/env python3
#mail infaaf@126.com
import re,sys
symbos_map={'+-':'-','++':'+','-+':'-','--':'+'}
# -1-(-1)*-1 =-2 #过程 -1--1*-1 => -1-- -1 => -1+-1 => -1-1 => -2
# 找最内括号,数字后面无符号,去除括号
# 找最内括号,有表示式,先乘除,乘除 从数字开始匹配, 1*-1 1*1
# 乘除完成,从左到右,带符号匹配。 -1+-1 不等于 -(1-1) ,需要处理-1-------1 情况(由于乘除时未处理符号)
def calc_element_3(v1,v2,symbol):
print("计算: %s,%s,%s"%(v1,v2,symbol))
'''带符号 + - * / '''
v1,v2=float(v1),float(v2)
if symbol=='+':return v1+v2
elif symbol =='-':return v1-v2
elif symbol == '*':return v1*v2
elif symbol =='/':return v1/v2
else:print(symbol);sys.exit()
def multi_divi(s):
''' s括号内表达式,用于处理乘除。找到1*-2,处理为-2 ,处理1次 '''
print("处理乘除: %s"%s)
re_seach_obj=re.search(r'([0-9.]+)([*/])([+-])?([0-9.]+)',s)
if re_seach_obj is not None:
s_match_str = re_seach_obj.group(0) # 1*-1
value1=re_seach_obj.group(1)
value2=re_seach_obj.group(4)
simblos=re_seach_obj.group(2)
simblo_ext=re_seach_obj.group(3)
ret=calc_element_3(value1,value2,simblos)
ret=simblo_ext+str(ret)
print(s_match_str,ret)
s=s.replace(s_match_str,ret)
return s
# res=multi_divi('-1-2*-2') # print(res)
def add_minu(s):
print("处理加减: %s"%s)
''' -1--1,1--1,-1+1,-1---1,-1---------1,用于从左往右处理加减,处理1次'''
if re.search(r'[*/]', s):
print("should do * / before + -: %s"%s)
sys.exit()
while re.search(r'[+\-*\\]{2,}',s): #-1-1 ,1+++++1 => -1-1 , 1+1
for symbos_key in symbos_map:
s=s.replace(symbos_key,symbos_map[symbos_key])
# print(s)
re_seach_obj = re.search(r'([+-]?[0-9.]+)([+-])([0-9.]+)', s)
if re_seach_obj:
s_match_str = re_seach_obj.group(0) # 1*-1
value1=re_seach_obj.group(1)
value2=re_seach_obj.group(3)
simblos=re_seach_obj.group(2)
ret=calc_element_3(value1,value2,simblos)
# print(s_match_str,ret)
s=s.replace(s_match_str,str(ret))
# print(s)
return s
# res=add_minu('1.0+1.5++++1')
def handler_expression(expression):
print("进入表达式处理%s"%expression)
while re.search('[*/]',expression):
expression=multi_divi(expression)
while re.search('[0-9.]+[+-]+[0-9.]+',expression):
expression=add_minu(expression)
return expression
# res=handler_expression('-1+---5*-2/-1++2+2+2') # print(res)
# a=handler_expression('1+2--5.0*-3.0')
# print(a)
def hadler_braces(s):
print(s)
flag=True
while flag:
re_obj=re.search('\([+\-*/0-9.]*\)',s)
if re_obj:
s_match_str=re_obj.group(0)
print("括号匹配: %s"%s_match_str)
if re.match('\([+\-]?([0-9.]*)\)',s_match_str):
print("仅剩余单个值: %s"%s_match_str)
s_match_str_match=re.match('\(([+\-]?[0-9.]*)\)',s_match_str).group(1)
s = s.replace(s_match_str, s_match_str_match)
print(s)
else:
print("调用处理%s"%s_match_str)
s_match_str_str=re.search('\(([+\-*/0-9.]*)\)',s).group(1)
ret=handler_expression(s_match_str_str)
s = s.replace(s_match_str, str(ret))
print(s)
else:
flag=False
return s
# no_braces_result=hadler_braces('(-1+(2-5*(-1))*(2-5))')
# result=handler_expression(no_braces_result)
# print(result)
if __name__ == '__main__':
while True:
exp=input("输入表达式: ")
exp=re.sub('\s','',exp)
no_braces_result=hadler_braces(str(exp))
result=handler_expression(no_braces_result)
print(result)
python题库刷题训练软件_刷题 -- python计算器练习题相关推荐
- python数据分析与发展常用哪些软件_分享一下Python数据分析常用的8款工具
Python是数据处理常用工具,可以处理数量级从几K至几T不等的数据,具有较高的开发效率和可维护性,还具有较强的通用性和跨平台性,这里就为大家分享几个不错的数据分析工具,需要的朋友可以参考下 Pyth ...
- python标准库导入语句有哪些_如何将python标准库缺失的进行导入?
代码写的很多时候,如果我们需要一个内容,肯定是要将内容拆分的,然后进行导入,但是导入和最简单的复制,黏贴是一样的嘛?答案肯定不是啊,那要怎么将这些内容进行导入呢,下面小编就给大家整理出来,内容很少,大 ...
- 刷题神器怎么导入java,怎么导题库_有没有比较好的可以自己导入题库进行模拟考试练习的软件_淘题吧...
① 本人有一题库,怎么把里面的试题全部导出 题库都加密了,没有导出功能.只能固定抽题后,整理出来. ② 在线考试系统题库怎么导入数据库 优考试的考试系统导入题库是用word和excel的模板去编辑试题 ...
- python基本原理概论_优学院《2020年马克思主义基本原理概论题库(高职类)》查题教程2020高校邦《Python程序设计基础【实境编程】》答案完整...
优学院<2020年马克思主义基本原理概论题库(高职类)>查题教程2020高校邦<Python程序设计基础[实境编程]>答案完整 更多相关问题 专业职业是相对以下哪点而言的(). ...
- JavaScript|免费导入题库,考试复习工具,刷题神器,支持导入excel题库【完全免费+提供源码】
工具界面展示 点击这里下载源代码↓↓↓ 基于JS的导入EXCEL题库复习小工具_intitle:javascript搜题-Javascript文档类资源-CSDN下载 目录 一.工具使用说明 二.界面 ...
- 赛码行测题库_行测题库:行测数字推理模拟题2.22
行测题库:行测数字推理模拟题 1.1,-5,10,10,40,( ) A.-35 B.50 C.135 D.280 2.-1,3,-3,-3,-9,( ) A.-9 B.-4 C.-14 D.-45 ...
- 2021年计算机应用基础统考题库,2021年7月计算机应用基础统考题库-网络教育统考计算机应用基础真题...
2021年7月网络教育统考计算机应用基础统考题库现已更新完毕. 题库在覆盖率和通过率上,均有保障,前提为,获取题库后需复习才行. 计算机应用基础统考题库,单选题以及操作题均为重点必抽题,每道操作题均有 ...
- 中国移动计算机类行测题目,2019中国移动春招考试行测题库:行测常识判断模拟题(十三)...
行测题库:行测常识判断模拟题 1. 下列有关生活常识的叙述正确的是: A.使用无磷洗衣粉是因为磷易造成环境水体富营养化,破坏水质 B.空调工作的时候有水流出而冰箱没有,由此可判断常见的家用空调和电冰箱 ...
- 二级MySQL,未来教育MySQL题库,15套试卷,sql题答案。
未来教育MySQL题库,15套试卷,sql题答案. 一. 1.insert into tb_dept values('D4','公关部','Liming','010-82953306');2.alte ...
最新文章
- 剑指offer:连续子数组的最大和
- iphone ios 如何开发升级适配 iphone5 4inch
- mybatis多表新增如何获取主键ID
- oracle之trunc(sysdate)
- unity2d随机生成物体_2020 年最好用的一键生成设计神器,全在这里了!
- Mongoose aggregate 多表关联查询
- 计算机辅助功能包括什么,CAD软件是什么?有什么功能?
- 2017.3.23 特别行动队 思考记录
- 决策树CART算法讲解
- Java基础知识框图总结
- 如何实现快捷方式中的查找目标功能
- 宝峰uv5r怎么设置信道_宝峰5R说明书 及设置方法
- SpringBoot YML 配置ListBean
- als算法参数_协调过滤算法之ALS
- stm32看门狗定时器记录
- 2.15 随机存取存储器与只读存储器
- mysql reads sql data_mysql – CREATE FUNCTION错误“此函数没有确定,否SQL或READS SQL DATA”...
- 查询rssi指令_h3c无线控制器常用命令(wx)
- WEB攻防-通用漏洞SQL读写注入ACCESS偏移注入MYSQLMSSQLPostgreSQL
- Linux UVC driver 独立交叉编译记录
热门文章
- SQL中 char、varchar、text 和 nchar、nvarchar、ntext的区别
- 超级usb万能启动盘
- 程序员十大安全技巧(转)
- java的数组查找算法_java数组、排序算法、查找算法详解
- excel图片地址直接显示图_图片转表格基于百度AI
- 某系统有6台输出设备 有多个进程均需要使用2台_从零开始学K8s: 2.开发与部署方式的演变...
- android bitmap转图片_Android 这些 Drawable 你都会用吗?
- 蓄水池问题c语言编程,蓄水池大作战
- mysql.net开发驱动_mysql数据库.net开发驱动(mysql connector net )
- Potplayer使用必看