# 定义魔方阵的维度n(此处n=5)
n = 5
# 创建n×n的全0矩阵
magic_square = [[0 for _ in range(n)] for _ in range(n)]
# 初始化第一个数字1的位置:第0行第2列(第一行正中间)
row, col = 0, n // 2
magic_square[row][col] = 1
# 填充数字2到n×n
for num in range(2, n * n + 1):
# 计算右上位置的候选行和列
new_row = (row - 1) % n
new_col = (col + 1) % n
# 判断右上位置是否可填(为0表示未被填充)
if magic_square[new_row][new_col] == 0:
row, col = new_row, new_col
else:
# 右上位置不可填,则填当前位置的正下方
row = (row + 1) % n
# 将当前数字填入矩阵
magic_square[row][col] = num
# 输出魔方阵
for i in range(n):
for j in range(n):
print(f"{magic_square[i][j]:4d}", end="")
print()