项目场景:
提示:这里简述项目相关背景:
python练习题
问题描述:
提示:这里描述项目中遇到的问题:
输入一个自然数N(2到9之间),要求输出如下的魔方阵,即边长为NN,元素取值为1至NN,1在左上角,呈顺时针方向依次放置各元素
原因分析:
提示:这里填写问题的分析:
实现旋转矩阵可以看成走迷宫一样有着固定的顺序,若碰到边界或者已经被填了数值的地方,就应该换方向。若不清楚,什么时侯进行哪一步操作,可以从三阶和四阶两个已经的去模拟实现
解决方案:
提示:这里填写该问题的具体解决方案:
n = eval(input())
arr = [[0 for i in range(n)] for j in range(n)] # 生成初始值为0的n*n的二维数组
max = n*n # 数值最大值
num = 1
x = 0
y = 0
while num <= max:
for i in range(n): # 向右
arr[x][y] = num
num += 1
y += 1
y -= 1 # 循环结束条件时 y=n
n -= 1 # 经过一个循环少一行
x += 1
for i in range(n): # 向下
arr[x][y] = num
num += 1
x += 1
x -= 1
y -= 1 # 少一列
for i in range(n): # 向左
arr[x][y] = num
y -= 1
num += 1
y += 1
x -= 1 # 少一行
n -= 1
for i in range(n):
arr[x][y] = num
x -= 1
num += 1
x += 1 # 继续向右
y += 1
# print(arr)
fd = open("file.out", 'w')
for i in arr:
for j in i:
fd.write("%5d"%j)
fd.write("\n")
|