python输入一个四则运算表达式,python求表达式值例题
本文主要介绍python的四个运算表达式的求值实例的详细说明。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。
00-1010四则算术表达式求值思路讲解算法步骤代码
目录
四则运算表达式求值
双栈用于实现存储数值的3354栈num和存储运算符的栈op。
思路说明
预处理原来的表达式字符串exp,把它变成一个list explist,其中一个元素对应一个值或操作符。遍历explist,将每个元素依次推入对应的栈中。每次推送后,判断当前两个栈顶是否可以进行乘除运算。栈顶乘除的充要条件是ops栈顶是*、/中的一个,nums中只比ops中多一个元素。如果可以操作,操作并将结果按回nums。遍历完explist后,所有的乘除运算都已经执行完毕,ops中只剩下加法和减法。然后开始另一个循环,继续操作。最后,nums中唯一剩下的元素是表达式的值。
算法步骤
定义操作(a,b,op: str):
计算运算的结果。
:参数a:阀门
:参数b: val
:param op:运算符
:返回:值
if op== :
返回a b
elif op==-:
返回a-b
elif op==*:
返回a*b
elif op==/:
返回a/b
else:
引发异常(“不正确的运算符”)
def exp _ str 2 list(exp : str):
表达式exp:str被转换成一个列表,每个元素对应一个数字num或运算符op .
Exp是由四个算术表达式组成的标准字符串。
:param exp: str,表达式
:返回:列表
Opset={ ,-, * ,/} #运算符集
标志=-1
explist=list()
对于,char in enumerate (exp) : #表示表达式字符串中的每个字符
If char in opset: # If char是一个运算符
Explist。APPEND (EXP [flag13360i]) #从前一个运算符到当前运算符的编号保存到EXPLIST。
Flag=i #将标志更新到当前op位置
Explist.append(char) #当前op也加入Explist。
explist.append(exp[flag 1:])
返回explist
def calculate _ expression(exp : str):
评估表达式。计算由字符串exp表示的表达式的值,并返回一个数值。
Exp是一个标准的四表达式字符串,它不包含括号。
:param exp: str,表达式
:返回:值
opset={ ,-, * ,/}
Nums=list() #数字堆栈
Ops=list() #运算符堆栈
explist=exp_str2list(exp)
打印(爆炸列表)
对于explist:中的e
# e进入堆栈
E if in opset3360 #如果e是一个运算符
操作附加(e)
else:
nums.append(eval(e))
#如果E是具有高优先级的乘法和除法方法,并且
# nums精确匹配ops,栈顶可以计算一次,运算结果压回nums。
if ops和ops[-1] in {* ,/ } and len(nums)==len(ops)1:
op=ops.pop()
y=nums.pop()
x=nums.pop()
nums.append(operation(x,y,op))
#此时,explist中的所有元素都已经被遍历,乘除法也已经被操作。双栈上只剩下加法和减法可操作。众所周知,加减法服从结合律,所以我们可以一直计算到最后。
而ops:
op=ops.pop()
y=nums.pop()
x=nums.pop()
x_op_y=运算(x,y,op)
nums.append(x_op_y)
返回num[0]
if __name__==__main__:
exp=1*43 542 532*432
print(calculate_expression(exp))
打印(eval(exp))
参考python开发全功能的任意表达式求值示例
以上是python四个算术表达式求值例子的详细内容。更多关于python四则算术表达式求值的信息,请关注盛行IT软件开发工作室的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。