使用算符优先分析方法设计一个计算器,必须能够完成加、减、乘、除、幂、括号()等运算符;给定任意符号串,判断其是否是正确的表达式,若是给出计算结果;写出具体代码
时间: 2023-03-06 19:07:59 浏览: 57
用算符优先分析方法设计一个计算器,需要满足以下要求:1.实现加、减、乘、除、幂、括号()等运算符的运算功能;
2.给定任意符号串,判断其是否是正确的表达式,若是给出计算结果;以下是代码实现:def calculate(expression):
# 定义优先级字典
priority = {'+':1,'-':1,'*':2,'/':2,'^':3}
# 定义栈
stack = []
# 将表达式分割为list
expression_list = expression.split()
# 遍历list
for i in expression_list:
# 判断是否为数字
if i not in priority.keys():
stack.append(float(i))
# 判断是否为运算符
else:
# 弹出栈顶两个数字运算
a = stack.pop()
b = stack.pop()
if i == '+':
stack.append(a+b)
elif i == '-':
stack.append(b-a)
elif i == '*':
stack.append(a*b)
elif i == '/':
stack.append(b/a)
elif i == '^':
stack.append(b**a)
return stack.pop()