python输入一个表达式字符串计算结果不使用eval
时间: 2023-04-18 20:00:49 浏览: 125
可以使用栈来实现表达式的计算,具体步骤如下:
1. 定义一个栈,用来存储数字和运算符。
2. 遍历表达式字符串,如果遇到数字,就将其压入栈中;如果遇到运算符,就将栈顶的两个数字弹出,进行运算,并将结果压入栈中。
3. 最后栈中只剩下一个数字,就是表达式的计算结果。
下面是一个示例代码:
```python
def calculate(expression):
stack = []
i =
while i < len(expression):
if expression[i].isdigit():
j = i
while j < len(expression) and expression[j].isdigit():
j += 1
num = int(expression[i:j])
stack.append(num)
i = j
elif expression[i] in "+-*/":
op = expression[i]
if len(stack) < 2:
raise ValueError("Invalid expression")
b = stack.pop()
a = stack.pop()
if op == "+":
result = a + b
elif op == "-":
result = a - b
elif op == "*":
result = a * b
elif op == "/":
result = a / b
stack.append(result)
i += 1
else:
raise ValueError("Invalid expression")
if len(stack) != 1:
raise ValueError("Invalid expression")
return stack[]
```
这个函数接受一个表达式字符串作为参数,返回计算结果。如果表达式不合法,会抛出 ValueError 异常。
阅读全文