Как проверить является ли введенная матрица магическим квадратом, или нет?

В строке проверки первой диагонали выдает ошибку, что b - это список, а не число.
Как исправить?

Создается матрица:

matrix = []
n = 2
for i in range(n):
 row = []
 for j in range(n):
  row.append(int(input()))
 matrix.append(row)

#Сумма 1ой строки сравнивается с остальными
first = sum(matrix[0])
for k in range(1, n):
    if sum(matrix[k]) != first:
        print(False)
        break
    else:

#Теперь столбцы сравниваются с первой строкой

     for k in range(0, n):
       if sum([row[k] for row in matrix]) !=  first:
         print(False)
         break
       else:

#Теперь диагонали
#Первая диагональ \
         for b in range(n):
           if sum([matrix[b, b] for row in matrix]) != first:
             print(False)
             break

# Вторая диагональ       
           else:
            if sum([matrix[n-b-1, b] for row in matrix]) != first:
             print(False)
             break
            else:
              print(True) 

Ответы (3 шт):

Автор решения: Evgeniy

Сначала нужно найти саму диагональ в списке. Т.е. мы должны брать n элемент первой строки, потом n+1 второй строки, n+2 третьей строки, и так далее

matrix = []

n = 2

for i in range(n):
    row = []
    for j in range(n):
        row.append(int(input()))
    matrix.append(row)

# Сумма 1ой строки сравнивается с остальными
first = sum(matrix[0])
for k in range(1, n):
    if sum(matrix[k]) != first:
        print('Суммая 1й строки с остальными, FALSE')
        break
    else:

        # Теперь столбцы сравниваются с первой строкой

        for k in range(0, n):
            if sum([row[k] for row in matrix]) != first:
                print('Столцы со строкой, FALSE')
                break
            else:

                # Теперь диагонали
                # Первая диагональ \
                diag = []
                number = 0
                for each in matrix:
                    diag.append(each[number])
                    number = number + 1
                if sum(diag) != first:
                    print('Первая диагональ, FALSE')
                    break

                # Вторая диагональ
                else:
                    diag = []
                    number = -1
                    for each in matrix:
                        diag.append(each[number])
                        number = number - 1
                    if sum(diag) != first:
                        print(False)
                        break
                    else:
                        print(True)
                        break


→ Ссылка
Автор решения: Karlusha

Вот тоже что-то получилось...вроде как

Теперь диагонали

Первая диагональ \

     for b in range(n):
       if sum(matrix[b][b] for b in range(n)) != first:
         print(False)
         break

Вторая диагональ

       else:
        if sum(matrix[n-b-1][b] for b in range(n)) != first:
         print(False)
         break
        else:
          print(True)
→ Ссылка
Автор решения: Karlusha

Может вторая диагональ так

        diag = []
        num = n-1
        for each in matrix:
          diag.append(each[num])
          num = num -1
        if sum(diag) != first:
             print(False)
             break
        else:
             print(True)
             break
→ Ссылка