【Python】打印魔方阵

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CSDN___CSDN/article/details/88803039

1.将“1”放在第一行,中间一列;

2.从2开始至N*N各数按如下规律:

每一个数存放的行比上一个数的行减1;

每一个数存放的列比上一个数的列加1;

3.当一个数行为1,下一个数行为N;

4.当一个数列数为N,下一个数列数为1,行数减1;

5.若按上述规则确定的位置有数字,或上一个数位第1行第N列,

下一个数字位置为上一个数的正下方(即行数减1,列数不变);

n = int(input())
x = [[-1 for i in range(n)] for i in range(n)]

line = 0
col = n//2

cnt = 1
while cnt<=n**2:
    x[line][col] = cnt
    preline = line
    precol  =col
    line -= 1
    if line==-1:
        line = n-1
    col = (col+1)%n
    if x[line][col]!=-1 :
        line = preline +1
        col = precol
    cnt+=1

for item in x:
    print(item)

猜你喜欢

转载自blog.csdn.net/CSDN___CSDN/article/details/88803039