Для справки, я бы рекомендовал другой подход к поиску решений, такой как предложенный в ответ Энди Т или yi_H ответ . Тем не менее, этот ответ решает проблему, представленную в вопросе.
Код, который вы предоставляете, будет выполняться до тех пор, пока не будет найден один ответ, и остановится, поскольку при нахождении первого ответа solved
не будет равно 0. Поскольку вы знаете, что есть 2 решения, вы можете изменить условие цикла while:
while solved < 2:
try1('123456789')
В ответ на комментарий Марка о том, что это может привести к дублированию ответов, приведем код, который обеспечит получение различных решений:
import random
def try1(param):
global solved
try1.prev_soln = []
opers = ['+', '*', '']
hotpotato = ('%s'.join(param) % (random.choice(opers),
random.choice(opers),
random.choice(opers),
random.choice(opers),
random.choice(opers),
random.choice(opers),
random.choice(opers),
random.choice(opers),
)
)
if eval(hotpotato) == 2002:
if hotpotato not in try1.prev_soln:
solved += 1
try1.prev_soln.append(hotpotato)
print "Solution:", hotpotato, "= 2002 :-)"
else:
pass
solved = 0
while solved < 2:
try1('123456789')
Конечно, этот подход предполагает 2 решения. Если бы у вас было неизвестное количество решений, вы бы не знали, когда остановиться, поэтому я рекомендую другой подход к поиску решений.