Как заставить программу создавать новые переменные и применять их особым образом? - PullRequest
0 голосов
/ 29 апреля 2019

говорят, что у меня есть переменные 'a' и 'b', и я хочу, чтобы моя программа работала:

for a in range(n):
    for b in range(n):
        if a**2 + b**2 ==n:
             return (a, b)
        else:

Сделайте то же самое, но с a, b, c, как в:

for a in range(n):
    for b in range(n):
        for c in range(n):
           if a**2 + b**2 + c**2 ==n:
               return (a, b, c)

И так далее с d, e и т. Д ... сколько бы переменных ни потребовалось, чтобы найти ответ.

Как мне применить это, чтобы оно продолжалось бесконечно, пока не будет найден ответ? Как я могу заставить его создавать новые переменные, а затем добавлять их способом, показанным выше?

1 Ответ

1 голос
/ 29 апреля 2019

Необходимо помнить две вещи: во-первых, x**2 >= 1 для всех ненулевых x;во-вторых, если c == 0, то a**2 + b**2 + c**2 == a**2 + b**2.Вместе они устанавливают верхнюю границу n для размера кортежей, которые необходимо учитывать.

Это означает, что вы можете использовать один цикл, который повторяет все возможные n -туплицы:

from itertools import product

for t in product(range(n), repeat=n):
    if sum(x**2 for x in t) == n:
        return t
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...