n=''
#输入exit退出循环
while n!= exit:
n = input("请输入维数n,n为奇数")
if n=='exit':
print("程序结束")
break
elif int(n)%2!=1:
print("请输入奇数")
continue
else:
n=int(n)
# 我没有导入numpy库中的zeros方法创建二维数组而是采用了循环创建:
Array = [[0] * n for i in range(n)]
#i,j表示行列的值
i = 0
j = int((n + 1) / 2 - 1)
Array[i][j] = 1
#从第二个数开始循环,到n的平方结束循环
for num in range(2, n ** 2 + 1):
#上方出界
if i == 0 and j < n - 1:
i = n - 1
j += 1
Array[i][j] = num
#右方出界
elif i > 0 and j == n - 1:
i -= 1
j = 0
Array[i][j] = num
#上方、右方均出界
elif i == 0 and j == n - 1:
i += 1
Array[i][j] = num
#上方已填入数字
elif Array[i - 1][j + 1] != 0:
i += 1
Array[i][j] = num
#其余情况
else:
i -= 1
j += 1
Array[i][j] = num
num += 1
#循环输出二维数组中的值
for i in range(n):
for j in range(n):
print(Array[i][j],end='t')
print('')