python实现一个简单的到括号的计算器
通过Python,做一个简单的计算器,能计算带括号的加减乘除,通过在控制台上输入一个式子,控制台输出结果。
拿到这个的时候,首先想到的是两个不好解决的点,一个是在你输入中怎样匹配到“+”,“-”,“*”,“/”,然后通过匹配到着这些字符串实现计算。二个是通过怎样匹配到括号里面的计算式,运算法则是有括号需要先算括号里面的。
首先我得将输入的式子(实质接收到的是字符串)按数字,运算字符,括号切割开来。怎么切开来,找过一些资料,之前只知道Python里的 re 模块能通过正则做一些匹配,切割之内的处理。
最开始只知道按匹配的字符进行切割
如:
import re
str = "12+4*(2+3)-5+4/2"
print(re.split(r"\D",str))
['12', '4', '', '2', '3', '', '5', '4', '2']
#这里的 \D 是匹配到非数字的进行切割,得到的全是数字,匹配项没有输出
这里就把所有的数字都切割出来了,但是我想把所有的全部切割得到字符串的列表
如:
import re
str = "12+4*(2+3)-5+4/2"
print(re.split(r"(\D)",str))
['12', '+', '4', '*', '', '(', '2', '+', '3', ')', '', '-', '5', '+', '4', '/', '2']
#这里的 "(\D)" 将匹配项也输出
这里就能将输入的字符串全部进行你需要得到的处理,我的这一段处理的代码块
def split_str(shizi):
#将整个字符串切割
str = re.split(r"(\D)",shizi) #指定分割符用()括起来,表示保留匹配项
#print(str)
#str.pop()
print(str)
for index,i in enumerat