Неверный результат для функции, чтобы проверить, является ли сетка антисимметричным питоном - PullRequest
0 голосов
/ 25 апреля 2018

Большинство моих тестовых случаев возвращают правильные результаты, но один возвращает этот True, когда оно должно быть ложным:

print antisymmetric([[0, 1, 2], 
                 [-1, 0, -2], 
                 [2, 2,  3]])

Может кто-нибудь сказать мне, что не так с моим кодом?Спасибо!

def antisymmetric(A):
    n = len(A)
    i = 0
    while i < n:
        j = 0
        while j < n:
            if A[i][j] == -A[j][i]:
                return True
            else:
                return False
            j += 1
        i += 1
# Test Cases:

print antisymmetric([[0, 1, 2], 
                 [-1, 0, 3], 
                 [-2, -3, 0]])
#>>> True

print antisymmetric([[0, 0, 0],
                 [0, 0, 0],
                 [0, 0, 0]])
#>>> True

print antisymmetric([[0, 1, 2], 
                 [-1, 0, -2], 
                 [2, 2,  3]])
#>>> False

print antisymmetric([[1, 2, 5],
                 [0, 1, -9],
                 [0, 0, 1]])
#>>> False

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018
def antisymmetric(l):
    for i in range(len(l)):
        for j in range(len(l[i])):
            if l[i][j] != -l[j][i] and i != j:
                return False
    return True

Чтобы оценить, является ли матрица антисимметричной, вам нужно проверить все случаи, следовательно, вы должны проверить отрицательное условие, что для любого элемента, если тест не удовлетворяет, он немедленно возвращает False

В случаесимметричный он оценивает все тестовые случаи и, как показано в примере выше, функция вернет True, если цикл завершится.

Ваш результат теста не пройден, потому что вы сразу возвращаете True после соответствия только одному условию.ваш цикл будет соответствовать i=0, j=0 как A[0][0], что равно 0, а 0 == -0 будет оценивать True, и вы сразу же вернули его, следовательно, это даст вам нежелательный результат.

Также вам нужно пропустить диагональный элементпотому что это не меняет

0 голосов
/ 25 апреля 2018

Вы должны вернуть False как можно скорее и вернуть True в конце внешнего цикла while, чтобы убедиться, что все пары значений сравниваются.

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