Условия задачи:

 

Магический квадрат Ло Шу. Магический квадрат Ло Шу представляет собой таблицу с 3 строками и 3 столбцами. Магический квадрат Ло Шу имеет свойства:
•таблица содержит числа строго от 1 до 9;
•сумма каждой строки, каждого столбца и каждой диагонали в итоге составляет одно и то же число.
Магический квадрат можно сымитировать в программе при помощи двумерного списка. Напишите функцию, которая принимает двумерный список в качестве аргумента и определяет, является ли список магическим квадратом Ло Шу. Протестируйте функцию
в программе.

 

Решение задачи:

from random import randint
# Создадим функцию для проверки магического квадрата и на ее основе через цикл while найдем магический квадрат
def main():
    ROW = 3
    COL = 3
    def check(value):
        summa = value[0][0] + value[0][1] + value[0][2]
        if  value[1][0] + value[1][1] + value[1][2] == summa and value[2][0] + value[2][1] + value[2][2] == summa and \
            value[0][0] + value[1][1] + value[2][0] == summa and value[0][1] + value[1][1] + value[2][1] == summa and \
            value[0][2] + value[1][2] + value[2][2] == summa and value[0][0] + value[1][1] + value[2][2] == summa and \
            value[2][2] + value[1][1] + value[0][0] == summa:
            return False
        else:
            return True
    flag = True
    while flag:
        magic = [[randint(1, 9) for x in range(COL)] for i in range(ROW)]
        flag = check(magic)
    print(f'Это магический квадрат {magic}')
main()