Я пытаюсь написать функцию Python, которая может возвращать «True» или «False» при оценке магического квадрата. Магический квадрат - это матрица, все суммы строк, суммы столбцов и суммы двух диагоналей одинаковы. (Одна диагональ матрицы идет от верхнего левого угла в нижний правый угол, другой диагонали идет сверху справа в нижнем левом углу.)Почему моя функция Python не возвращает результат?
Вот мой код:
def isMagic(A3):
dim = A3.shape[0] * A3.shape[1]
construct = np.arange(1,dim+1)
if A3.shape[0] == A3.shape[1]:
exist = []
for r in range(len(A3)):
for c in range(len(A3)):
exist.append(A3[r,c] in construct)
if all(exist):
def all_same(items):
return all(x == items[0] for x in items)
dig_1 = sum(np.diag(A3))
dig_2 = sum(np.diag(np.fliplr(A3)))
dig = all_same(np.array([dig_1, dig_2]))
column = all_same(np.sum(A3, axis = 1))
row = all_same(np.sum(A3, axis = 0).transpose())
if all(dig, column, row):
return True
else:
return False
Тем не менее, когда я пытаюсь проверить свой код на одном из магического квадрата, функция не возвращает никакого значения:
test2 = np.matrix([[8, 1, 6],
[3, 5, 7],
[4, 9, 2]])
isMagic(test2) # True
Я подумал, что если бы это было потому, что отступы?
Я думаю, нет ничего прилагается к ** есть ** список –
функции Python всегда возвращает значение. –
Булевские значения добавляются в список. –