在数学计算中尝试所有可能的括号放置
Try all possible parenthesis placement on a math calculation
所以我有一个包含数字和数学运算符的列表。
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)。它说这是一个语法错误。我知道这就是问题所在,但我的问题是如何获得所有功能性括号组合并应用它们。
感谢您抽出宝贵时间,希望您能帮助我。
您可以只使用 'easier to ask for forgiveness than permission' 方法并将您的 eval 包含在 try/except.
中
try:
eval(expression)
except SyntaxError:
pass
所以我有一个包含数字和数学运算符的列表。
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)。它说这是一个语法错误。我知道这就是问题所在,但我的问题是如何获得所有功能性括号组合并应用它们。 感谢您抽出宝贵时间,希望您能帮助我。
您可以只使用 'easier to ask for forgiveness than permission' 方法并将您的 eval 包含在 try/except.
中try:
eval(expression)
except SyntaxError:
pass