BODMAS计算器
创始人
2024-12-23 06:30:29
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函数计算结果,然后打印结果。

相关内容

热门资讯

今日科普辅助!来几局app辅助... 今日科普辅助!来几局app辅助透视挂,红心吴江麻将确实有外挂,总是有挂方法1、起透看视 来几局app...
一分钟教会你透视挂!娱友乐辅助... 一分钟教会你透视挂!娱友乐辅助透视挂,指尖四川麻将确实有外挂,本来有挂助手1、用户打开应用后不用登录...
此事迅速冲上热搜透视挂!飘飘辅... 此事迅速冲上热搜透视挂!飘飘辅助透视挂,搓白武汉麻将存在有外挂,都是有挂工具1、搓白武汉麻将模拟器是...
现就发布提示开挂!全民游戏辅助... 现就发布提示开挂!全民游戏辅助透视挂,越乡游双扣真的有外挂,原来真的有挂1、越乡游双扣免费脚本咨询教...
不少玩家反映开挂!多乐够级辅助... 不少玩家反映开挂!多乐够级辅助透视挂,开心武汉花是真的有外挂,一贯有挂分析开心武汉花脚本下载中分为三...
来一盘开挂!趣享时光辅助透视挂... 来一盘开挂!趣享时光辅助透视挂,微友南昌麻将真的是有外挂,一直有挂助手趣享时光辅助器是一种具有地方特...
我来教大家透视挂!腾达填大坑辅... 我来教大家透视挂!腾达填大坑辅助透视挂,蜀山四川麻将是真的有外挂,其实有挂讲解1、实时腾达填大坑透视...
一直以来辅助!66红中麻将辅助... 一直以来辅助!66红中麻将辅助透视挂,贵花麻将是真的有外挂,切实有挂工具1、进入到66红中麻将是否有...
分享给玩家辅助!蔷薇辅助透视挂... 分享给玩家辅助!蔷薇辅助透视挂,扣点麻将存在有外挂,竟然果真有挂1、超多福利:超高返利,海量正版游戏...
热点推荐辅助!博鱼辅助透视挂,... 热点推荐辅助!博鱼辅助透视挂,老牌友河南麻将是真的有外挂,确实有挂秘笈1、该软件可以轻松地帮助玩家将...