您说的是动态创建表达式,这可以通过将它们编译为字节码来完成。
您正在寻找内置的 eval() 函数,该函数(除其他外)将表达式作为字符串接受,将其编译为字节码,并将表达式作为 Python 代码执行。
例如:
>> eval('2+2')
4
所以,你需要做的就是:
- 编写一个函数,将括号的所有可能组合生成为字符串
- 将每个字符串传递给 eval 方法
这是我的实现:
def parentheses(a, b, c, d):
for num in range(0, 9, 2):
for closing_index in range(4, 13, 2):
string_expression = ""
list = [str(a), '+', str(b), '*', str(c), "+", str(d), '*', str(a), "+", str(b)]
list.insert(num, '(')
if closing_index < (num + 4):
continue
list.insert(closing_index, ')')
for element in list:
string_expression += element
print(f'{string_expression} result: {str(eval(string_expression))}')
string_expression = ''
parentheses(49, 2, 21, 4)
结果:
(49+2)*21+4*49+2 result: 1269
(49+2*21)+4*49+2 result: 289
(49+2*21+4)*49+2 result: 4657
(49+2*21+4*49)+2 result: 289
(49+2*21+4*49+2) result: 289
49+(2*21)+4*49+2 result: 289
49+(2*21+4)*49+2 result: 2305
49+(2*21+4*49)+2 result: 289
49+(2*21+4*49+2) result: 289
49+2*(21+4)*49+2 result: 2501
49+2*(21+4*49)+2 result: 485
49+2*(21+4*49+2) result: 487
49+2*21+(4*49)+2 result: 289
49+2*21+(4*49+2) result: 289
49+2*21+4*(49+2) result: 295
Process finished with exit code 0
更多信息:https://realpython.com/python-eval-function/