编程实现一个简易四则计算器,如:输入3+2,输出5
时间: 2024-03-15 11:47:52 浏览: 20
好的,以下是 Python 语言的实现示例:
```python
# 定义四则运算函数
def calculator(s):
# 去除空格
s = s.replace(" ", "")
# 定义数字和符号堆栈
nums, ops = [], []
# 定义优先级字典
priority = {"+": 1, "-": 1, "*": 2, "/": 2}
# 定义数字字符集合
digits = set("0123456789")
# 定义当前数字
num = ""
for i in range(len(s)):
char = s[i]
if char in digits:
num += char
# 如果已经是最后一个数字,或者下一个字符不是数字,就将当前数字入栈
if i == len(s) - 1 or s[i + 1] not in digits:
nums.append(int(num))
num = ""
elif char in priority:
# 如果当前符号优先级低于栈顶符号,就先进行计算
while ops and priority[char] <= priority[ops[-1]]:
b, a = nums.pop(), nums.pop()
nums.append(eval(str(a) + ops.pop() + str(b)))
ops.append(char)
elif char == "(":
ops.append(char)
elif char == ")":
# 如果是右括号,就一直进行计算,直到遇到左括号
while ops[-1] != "(":
b, a = nums.pop(), nums.pop()
nums.append(eval(str(a) + ops.pop() + str(b)))
ops.pop()
# 计算剩余的表达式
while ops:
b, a = nums.pop(), nums.pop()
nums.append(eval(str(a) + ops.pop() + str(b)))
# 返回计算结果
return nums[0]
# 测试
print(calculator("3+2")) # 输出 5
```
需要注意的是,以上实现只支持整数四则运算,不支持小数和负数。如果需要支持这些功能,需要对代码进行相应的修改。