специальные пифагорейские тройки - PullRequest
0 голосов
/ 09 марта 2019
def pythagorean(n):
    aAndB = []
    for a in range(150, n-1):
        for b in range(150, n):
            for c in range(150,n+1):
                if (c * c) == a *a + b*b and a + b + c == 1000:
                    aAndB.append(a)
    return aAndB

print(pythagorean(500))

Итак, я сделал эту функцию, чтобы найти пифагорейские триплеты, которые соответствуют критериям a + b + c = 1000. Когда я запускаю это, я получаю [200,375]. Вопрос в том, почему я получаю два числа в моем списке aAndB, когда я специально попросил добавить элемент для a?

Если я попробую это с aAndB.append (c), результат покажет [425, 425]. Как мне исправить это, чтобы в списке отображался только один элемент?

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 13 марта 2019

Это потому, что есть 2 значения, которые удовлетворяют вашему условию:

if (c * c) == a *a + b*b and a + b + c == 1000:

Вы можете отладить код или просто добавить дополнительную информацию в массив, например:

def pythagorean(n):
    aAndB = []
    for a in range(150, n-1):
        for b in range(150, n):
            for c in range(150,n+1):
                if (c * c) == a * a + b * b and a + b + c == 1000:
                    aAndB.append({'a': a, 'b': b, 'c': c})
    return aAndB

result = pythagorean(500)
for v in result:
    print(v)

Такесли вы хотите только один элемент - выберите какой из массива 'result'.Например, если вы хотите только сначала:

first_element = None
if len(result) > 0:
    first_element = result[0]
    print('First element:', first_element)
...