计算器四则运算优先乘除的代码
时间: 2023-10-29 22:03:27 浏览: 81
以下是Python实现优先乘除的计算器四则运算代码:
```
def calculate(s: str) -> int:
stack = []
num = 0
sign = '+'
for i in range(len(s)):
if s[i].isdigit():
num = num * 10 + int(s[i])
if (not s[i].isdigit() and not s[i].isspace()) or i == len(s) - 1:
if sign == '+':
stack.append(num)
elif sign == '-':
stack.append(-num)
elif sign == '*':
stack.append(stack.pop() * num)
elif sign == '/':
stack.append(int(stack.pop() / num))
num = 0
sign = s[i]
return sum(stack)
```
代码思路:
1. 遍历输入的字符串,将数字字符转换为数字,用变量num保存。
2. 如果遇到非数字字符或字符串末尾,根据当前操作符进行计算:
- 如果是加号,直接将num压入栈中。
- 如果是减号,将-num压入栈中。
- 如果是乘号,将栈顶元素弹出并与num相乘,再将结果压入栈中。
- 如果是除号,将栈顶元素弹出并除以num(注意要取整),再将结果压入栈中。
3. 最后将栈中所有元素相加,即为最终结果。
这种代码实现方式利用了栈的特性,能够方便地处理乘除法优先级高于加减法的情况。
阅读全文