Python作业魔方阵

45 阅读1分钟
# 定义魔方阵的维度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()