BODMAS计算器
创始人
2024-12-23 06:31:49
0

以下是一个使用Python编写的BODMAS计算器的代码示例:

def calculate(expression):
    stack = []
    operators = {'+': 1, '-': 1, '*': 2, '/': 2, '^': 3}
    output = ''
    
    for char in expression:
        if char.isdigit():
            output += char
        elif char in operators:
            while stack and stack[-1] != '(' and operators[char] <= operators.get(stack[-1], 0):
                output += stack.pop()
            stack.append(char)
        elif char == '(':
            stack.append(char)
        elif char == ')':
            while stack and stack[-1] != '(':
                output += stack.pop()
            stack.pop()
    
    while stack:
        output += stack.pop()

    return output


def evaluate(expression):
    stack = []
    for char in expression:
        if char.isdigit():
            stack.append(int(char))
        else:
            operand2 = stack.pop()
            operand1 = stack.pop()
            if char == '+':
                stack.append(operand1 + operand2)
            elif char == '-':
                stack.append(operand1 - operand2)
            elif char == '*':
                stack.append(operand1 * operand2)
            elif char == '/':
                stack.append(operand1 / operand2)
            elif char == '^':
                stack.append(operand1 ** operand2)

    return stack.pop()


expression = input("请输入一个数学表达式: ")
postfix_expression = calculate(expression)
result = evaluate(postfix_expression)

print("计算结果为:", result)

这个代码示例使用了两个函数,calculate函数将中缀表达式转换为后缀表达式,evaluate函数计算后缀表达式的值。

首先,calculate函数遍历表达式中的每个字符。如果是数字,将其添加到输出字符串中;如果是运算符,将其与栈中的运算符进行比较,并根据优先级弹出栈中的运算符,然后将当前运算符入栈;如果是左括号,将其入栈;如果是右括号,弹出栈中的运算符直到遇到左括号为止。最后,将栈中剩余的运算符弹出并添加到输出字符串中。

然后,evaluate函数遍历后缀表达式中的每个字符。如果是数字,将其入栈;如果是运算符,弹出栈中的两个操作数,进行相应的运算,并将结果入栈。最后,返回栈中的结果。

最后,用户输入一个数学表达式,该表达式将通过calculate函数转换为后缀表达式,并通过evaluate函数计算结果,然后打印结果。

相关内容

热门资讯

安卓系统怎么连不上carlif... 安卓系统无法连接CarLife的原因及解决方法随着智能手机的普及,CarLife这一车载互联功能为驾...
iwatch怎么连接安卓系统,... 你有没有想过,那款时尚又实用的iWatch,竟然只能和iPhone好上好?别急,今天就来给你揭秘,怎...
oppo手机安卓系统换成苹果系... OPPO手机安卓系统换成苹果系统:现实吗?如何操作?随着智能手机市场的不断发展,用户对于手机系统的需...
安卓平板改windows 系统... 你有没有想过,你的安卓平板电脑是不是也能变身成Windows系统的超级英雄呢?想象在同一个设备上,你...
iphone系统与安卓系统更新... 最近是不是你也遇到了这样的烦恼?手机更新系统总是失败,急得你团团转。别急,今天就来给你揭秘为什么iP...
安卓系统上滑按键,便捷生活与高... 你有没有发现,现在手机屏幕越来越大,操作起来却越来越方便了呢?这都得归功于安卓系统上的那些神奇的上滑...
安卓系统连接耳机模式,蓝牙、有... 亲爱的手机控们,你们有没有遇到过这种情况:手机突然变成了“耳机模式”,明明耳机没插,声音却只从耳机孔...
希沃系统怎么装安卓系统,解锁更... 亲爱的读者们,你是否也像我一样,对希沃一体机上的安卓系统充满了好奇呢?想象在教室里,你的希沃一体机不...
安装了Anaconda之后找不... 在安装Anaconda后,如果找不到Jupyter Notebook,可以尝试以下解决方法:检查环境...
安卓换鸿蒙系统会卡吗,体验流畅... 最近手机圈可是热闹非凡呢!不少安卓用户都在议论纷纷,说鸿蒙系统要来啦!那么,安卓手机换上鸿蒙系统后,...