从键盘输入一段表达式(字符串),其中含有整数、加、减、乘、除并计算表达式的值
时间: 2023-07-10 10:37:16 浏览: 53
好的,您可以使用以下代码来实现您的需求:
```python
# 定义一个函数来计算表达式的值
def calculate(expression):
# 定义运算符的优先级
priority = {'+': 1, '-': 1, '*': 2, '/': 2}
# 定义两个栈来存储数字和运算符
nums = []
ops = []
# 定义一个函数来执行运算
def operate():
b = nums.pop()
a = nums.pop()
op = ops.pop()
if op == '+':
nums.append(a + b)
elif op == '-':
nums.append(a - b)
elif op == '*':
nums.append(a * b)
elif op == '/':
nums.append(a / b)
# 开始处理表达式
i = 0
while i < len(expression):
c = expression[i]
if c.isdigit():
# 如果是数字,读取整个数字并压入数字栈
j = i
while j < len(expression) and expression[j].isdigit():
j += 1
nums.append(int(expression[i:j]))
i = j
elif c in {'+', '-', '*', '/'}:
# 如果是运算符,将其压入运算符栈
while ops and priority[ops[-1]] >= priority[c]:
operate()
ops.append(c)
i += 1
elif c == '(':
# 如果是左括号,将其压入运算符栈
ops.append(c)
i += 1
elif c == ')':
# 如果是右括号,执行计算直到遇到左括号
while ops[-1] != '(':
operate()
ops.pop()
i += 1
else:
# 如果是空格或其他字符,忽略之
i += 1
# 处理剩余的运算符
while ops:
operate()
# 返回计算结果
return nums[0]
# 从键盘输入表达式
expression = input("请输入表达式:")
# 计算表达式的值
result = calculate(expression)
# 输出结果
print("计算结果为:", result)
```
这个实现方式使用了栈来处理表达式。首先定义了一个 `calculate` 函数来计算表达式的值。在函数中,我们使用了一个字典来定义运算符的优先级,以及两个栈来分别存储数字和运算符。然后,我们遍历表达式中的每个字符,根据不同的情况进行不同的操作:如果是数字,读取整个数字并压入数字栈;如果是运算符,将其压入运算符栈,如果栈顶运算符的优先级大于等于当前运算符,则先执行栈顶运算符;如果是左括号,将其压入运算符栈;如果是右括号,执行计算直到遇到左括号;如果是空格或其他字符,忽略之。最后,处理剩余的运算符,直到数字栈中只剩下一个数字,这个数字就是表达式的值。