函数还没学,不知道如何写。
python简单计算器,假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。


函数还没学,不知道如何写。
python简单计算器,假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。


关注引自免费微信小程序:皆我百晓生
为了实现这个简单的计算器,我们可以按照以下步骤编写Python代码:
下面是完整的Python代码实现:
def simple_calculator(expression):
# 定义运算符和它们对应的函数
operators = {
'+': lambda x, y: x + y,
'-': lambda x, y: x - y,
'*': lambda x, y: x * y,
'/': lambda x, y: x // y if y != 0 else "ERROR"
}
# 将输入字符串转换为列表,元素包括数字和运算符
tokens = list(expression)
# 初始化两个栈,一个用于存储数字,另一个用于存储运算符
num_stack = []
op_stack = []
for token in tokens:
if token.isdigit():
num_stack.append(int(token))
elif token in operators:
while (op_stack and op_stack[-1] in operators and
operators[token].__name__ <= operators[op_stack[-1]].__name__):
num2 = num_stack.pop()
num1 = num_stack.pop()
operator = op_stack.pop()
result = operators[operator](num1, num2)
num_stack.append(result)
op_stack.append(token)
elif token == '=':
break
# 处理剩余的运算符和数字
while op_stack:
num2 = num_stack.pop()
num1 = num_stack.pop()
operator = op_stack.pop()
result = operators[operator](num1, num2)
num_stack.append(result)
# 返回结果
return num_stack[0]
# 测试代码
expression = input("请输入一个四则运算算式(例如:1+2*10-10/2=):")
result = simple_calculator(expression.strip())
print(result)
这段代码首先定义了一个字典operators,其中包含了四个基本运算及其对应的函数。然后遍历输入的表达式,将数字压入num_stack,将运算符压入op_stack。当遇到运算符时,会检查栈顶的运算符是否具有更高的优先级,如果有,就执行相应的运算。最后处理完所有运算符后,返回num_stack中的结果。
请注意,这里我们使用了Python的lambda表达式来简化运算符的定义。如果你不熟悉lambda表达式,也可以使用常规的函数定义方式。