Если я вас хорошо понимаю, думаю, у меня есть идея для вас.
Прежде всего, вам нужно создать все возможные сочетания цифр и выражений. Вы можете сделать это следующим образом:
import itertools
num_list = ['2','7','8']
op = ['+','-','*','/'] * 2 # *2 for the case of same operator twice
num_perm = list(itertools.permutations(num_list))
op_perm = list(itertools.permutations(op, 2)) # We want perm of two operators.
Теперь вам нужно объединить все перестановки с математическим выражением, это хороший способ для этого:
list_of_experssions = list()
for num in num_perm :
for op in op_perm:
list_of_experssions.append(num[0] + op[0] + num[1] + op[1] +num[2])
Последний необходимо проверить, равны ли результаты двух выражений (используя функцию eval
), но сами выражения различны:
for exp1 in list_of_experssions:
for exp2 in list_of_experssions:
if eval(exp1) == eval(exp2) and exp1 != exp2:
print(exp1, exp2)
В вашем случае мы получили 336 математических выражений и 2560 пар равных выражения.