Python печатает массивы дважды - PullRequest
0 голосов
/ 04 ноября 2018

Я написал следующую реализацию расширенного евклидова алгоритма:

def extended_euclid(a, b):
    x_k = 1       # read x_k
    x_k1 = 0      # read x_(k+1)
    y_k = 0       # read y_k
    y_k1 = 1      # read y_(k+1)
    sign = 1
    while b != 0:
        q = a//b
        r = a - q*b
        a = b
        b = r
        xx = x_k1
        yy = y_k1
        x_k1 = q*x_k1 + x_k
        y_k1 = q*y_k1 + y_k
        x_k = xx
        y_k = yy
        sign = -sign
    x = sign*x_k
    y = sign*y_k
    return [a, x, y]

Работает как обычно, но когда я пытаюсь распечатать результат вызова функции, используя стандартную функцию «печать», вывод выводится дважды. Поэтому, когда я делаю

print(extended_euclid(15,10))

Я получаю вывод

[5, 1, 1]
[5, 1, 1]

Я не понимаю, почему вывод печатается дважды, не могли бы вы объяснить это мне. Также, когда я делаю

a = extended_euclid(15,10)
print(a[1])

Я получаю

1
1

что я тоже не понимаю.

РЕДАКТИРОВАТЬ: проблема заключалась в том, что я по ошибке импортировал файл дважды, что привело к неожиданным результатам. Может быть, это кому-нибудь поможет.

1 Ответ

0 голосов
/ 04 ноября 2018

Проверьте оставшуюся часть кода, если вы где-то печатаете эту функцию euclid, удалите эту печать и просто вызовите функцию. На моей машине этот код печатает только один результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...