Как корректно записать данную конструкцию из for?

Рейтинг: 0Ответов: 1Опубликовано: 21.03.2023

Есть такая констуркция:

equation = "32 * {} + 33 * {} + 34 * {} + 35 * {} + 36 * {} + 37 * {} + 38 * {} + 39 * {} + 40 * {} + 41 * {}"

for i in range(100):
    for x in range(100):
        for y in range(100):
            for g in range(100):
                ...
                if i + x + y + g + h + f + s + a + q + w <= 98:
                    eq = equation.format(w, q, a, s, f, h, g, y, x, i)
                    res = eval(eq)
                    if res == 8932:
                        print(f'{eq} = {res}') 

Хотелось бы узнать как можно записать такую конструкцию куда проще с возможностью масшабирования.

Ответы

▲ 2Принят

Ну как-то так, например. Только при таких вводных окончания процесса ждать можно до конца Вселенной ))

from itertools import product
from tqdm.auto import tqdm

n = 10
equation = ' + '.join(f"{32 + i} * {{}}" for i in range(n))
for numbers in tqdm(product(range(100), repeat=n), total=100**n):
    if sum(numbers) <= 98:
        eq = equation.format(*numbers)
        res = eval(eq)
        if res == 8932:
            print(f'{eq} = {res}')

Update: Потерял сначала условие на сумму, добавил.