当前位置: 首页 > 知识库问答 >
问题:

在python计算器中,如何对()中的操作进行优先级排序,其中输入为字符串?[副本]

柴高岑
2023-03-14

我正在完成代码战中的kata。

我得到一个字符串,如2 / 2 3 * 4 - 62 * ( 2 * ( 2 * ( 2 * 1 ) ) )

我不知道如何处理代码中的()。

目前我有:

class Calculator(object):
    def evaluate(self, string):
        # if () in s
        # find most inner ()
        s = string.split()
        while len(s) > 1:
            if ('/' in s or
                '*' in s):
                for i in range(len(s)):
                    if s[i] == '/':
                        s[i] = int(s[i-1]) / int(s[i+1])
                        s.pop(i-1)
                        s.pop(i)
                        break
                    elif s[i] == '*':
                        s[i] = int(s[i-1]) * int(s[i+1])
                        s.pop(i-1)
                        s.pop(i)
                        break
            else:
                for i in range(len(s)):
                    if s[i] == '-':
                        s[i] = int(s[i-1]) - int(s[i+1])
                        s.pop(i-1)
                        s.pop(i)
                        break
                    elif s[i] == '+':
                        s[i] = int(s[i-1]) + int(s[i+1])
                        s.pop(i-1)
                        s.pop(i)
                        break
        return s[0]

它的功能很棒,除了字符串与()

我如何处理它们,使其遵循适当的数学规则?

我们非常感谢您的任何建议。[1]: https://www.codewars.com/kata/5235c913397cbf2508000048/train/python

共有1个答案

邵和硕
2023-03-14

您可以搜索内括号,然后使用函数计算其内容(这称为递归),并重复此操作,直到没有括号为止。

内括号是括号之间没有其他括号的括号。

 类似资料:
  • 本文向大家介绍如何在Python中对字符串列表进行排序?,包括了如何在Python中对字符串列表进行排序?的使用技巧和注意事项,需要的朋友参考一下 要对列表进行排序,即对列表本身进行排序并更改列表本身的顺序,可以在字符串列表中使用。例如, 如果要保持原始列表不变,而要一个新的排序元素列表,则可以使用sorted(list)。例如,        

  • 问题内容: 有没有一种简单的方法可以在Python中按字母顺序对字符串中的字母进行排序? 因此对于: 我想返回: 问题答案: 你可以做:

  • 请检查上面的结果输出。如您所见,在之后,它显示。但是我需要显示而不是。我尝试了两种方法,但结果是一样的。 已经检查了以下问题, MySQL排序字符串号 从VARCHAR强制转换为int-MySQL

  • 问题内容: 我有被随机放入的。 例如: 考虑到您无法控制输入的事实(即,进入ArrayList的字符串是随机的;以任何顺序排列的斑马或龙),一旦ArrayList充满了输入,我如何按字母顺序对它们进行排序(不包括第一个)? 很好 排序按字母顺序排列。 问题答案: 上面的代码将反映已排序原始列表的 实际子 列表。

  • 我在JTable的第5列中为每行插入了一个JComboBox-Object。在我想使用对列进行行排序之前,一切都很好。在这种情况下,我得到以下异常: 下面是我在JTable中使用的类: TableModel: 在TableModel中,列5的-method返回-Object。 在TableCellEditor中,第5列中的每一行都有自己的-对象,而-方法返回相关-对象的。 因此Jtable确实有一

  • 我在API文档中看到上有一个方法,但我不清楚参数需要什么。目前的需要是一个非常简单的直接向上的阿尔法比较。