写一段代码满足以下要求:
#Python #方阵
将一个n阶方阵填满数(如图)
将矩阵的最外层称为“轨道0”第二层称为“轨道1”以此类推(如图)
根据指令将方阵的轨道逆时针旋转一格(如图)
写一段代码满足以下要求:
#Python #方阵
将一个n阶方阵填满数(如图)
将矩阵的最外层称为“轨道0”第二层称为“轨道1”以此类推(如图)
根据指令将方阵的轨道逆时针旋转一格(如图)
这个挺有意思的,完成
def matrix(n):
return [[ i * n + j + 1 for j in range(n)] for i in range(n)]
def show_matrix(x):
w = len(str(x[-1][-1]))
for row in x:
for it in row:
print(str(it).rjust(w),end=' ')
print()
def circle_matrix(x, n):
"""
逆时针旋转
:param x: 矩阵
:param n: 轨道数
:return:
"""
if n > len(x) / 2:
print(u"轨道数异常")
return
tmp = x[n][n]
max = len(x) - n - 1
for i in range(n,max):
x[n][i] = x[n][i+1]
for i in range(n,max):
x[i][max] = x[i + 1][max]
for i in range(max,n,-1):
x[max][i] = x[max][i - 1]
for i in range(max,n,-1):
x[i][n] = x[i - 1][n]
x[n+1][n] = tmp
if __name__ == '__main__':
m5 = matrix(5)
show_matrix(m5)
circle_matrix(m5,1)
print("------------------")
show_matrix(m5)