使用Python实现一个简单的计算器
发布时间:2023-12-04 12:04:53
实现一个简单的计算器主要包括以下几个步骤:
1. 接收用户输入的表达式
2. 解析表达式,并处理其中的运算符和操作数
3. 执行计算并返回结果
下面是一个简单的计算器的实现代码:
def calculator(expression):
# 移除表达式中的空格
expression = expression.replace(" ", "")
# 定义运算符的优先级
operators = {
'+': 1,
'-': 1,
'*': 2,
'/': 2,
'^': 3
}
# 定义操作符栈和操作数栈
operator_stack = []
operand_stack = []
# 定义辅助函数用于计算两个操作数的结果
def evaluate(operator, operand1, operand2):
if operator == '+':
return operand1 + operand2
elif operator == '-':
return operand1 - operand2
elif operator == '*':
return operand1 * operand2
elif operator == '/':
return operand1 / operand2
elif operator == '^':
return operand1 ** operand2
# 解析表达式并进行计算
i = 0
while i < len(expression):
if expression[i].isdigit():
# 提取操作数
operand = ""
while i < len(expression) and expression[i].isdigit():
operand += expression[i]
i += 1
operand_stack.append(float(operand))
elif expression[i] in operators:
# 提取操作符
while operator_stack and operators[operator_stack[-1]] >= operators[expression[i]]:
operand2 = operand_stack.pop()
operand1 = operand_stack.pop()
operator = operator_stack.pop()
result = evaluate(operator, operand1, operand2)
operand_stack.append(result)
operator_stack.append(expression[i])
i += 1
else:
i += 1
# 执行未计算完成的操作
while operator_stack:
operand2 = operand_stack.pop()
operand1 = operand_stack.pop()
operator = operator_stack.pop()
result = evaluate(operator, operand1, operand2)
operand_stack.append(result)
# 返回结果
return operand_stack[0]
# 使用例子
expression = "3 + 4 * 2 - 1"
result = calculator(expression)
print("结果:", result)
以上就是一个简单的计算器的实现。对于输入的表达式,它可以处理整数和浮点数的运算,支持加法、减法、乘法、除法和指数运算,并且按照乘法和除法的优先级进行计算。
在使用例子中,输入的表达式为"3 + 4 * 2 - 1",运算结果为10.0。
