在数学计算中尝试所有可能的括号位置

问题描述 投票:0回答:1

所以我有一个包含数字和数学运算符的列表。

number = ['10', '6', '2', '6', '3', '1'] 
operators = ['+', '*', '//, -,'+']

然后我像这样建立我的陈述

calculation = num[0] + operator[0] + num [1] ...

现在,我采用了在这里找到的函数来生成所有有效的括号。

def parens(left, right, string):
    if left == 0 and right == 0:
        arr.append(string)

    if left > 0:
        parens(left - 1, right + 1, string + "(")

    if right > 0:
        parens(left, right - 1, string + ")")

现在弹出一个称为括号的列表,其中包含所有组合

一个可能的组合现在是[(((((())))))],现在我将其放在等式中。

 for index_paranthesis in range(0, 12, 2):    # Steps of two, to get all uneven parenthesis
    calculation += parenthesis[index_paranthesis] 

    calculation += number[i_number]
    i_number += 1

    calculation += parenthesis[index_paranthesis + 1] #to get the even indexed parenthesis

    calculation += operators[i_operator]
    i_operator += 1

所以在那之后我得到了第一个括号的组合,如

calculation = (10(+(6(*(2(//)6)-)3)+)1)

所以现在的问题是使用eval(calculation)。它说那是语法错误。我知道那是问题,但是我的问题是如何获取所有功能括号组合并应用它们。感谢您准备的所有时间,希望您能为我提供帮助。

python combinations parentheses calculation
1个回答
0
投票

您可以使用“更容易请求宽恕而不是允许”的方法,并将您的评估括在try / except中。

try:
    eval(expression)
except SyntaxError:
    pass
© www.soinside.com 2019 - 2024. All rights reserved.