绕圈圈问题
def a_circle(SIZE):
array = [[0] * SIZE]
# 创建一个长度SIZE * SIZE的二维列表
for i in range(SIZE - 1):
array += [[0] * SIZE]
# 该orient代表绕圈的方向
# 其中0代表向下,1代表向右,2代表向左,3代表向上
orient = 0
# 控制将1~SIZE * SIZE的数值填入二维列表中
# 其中j控制行索引,k控制列索引
j = 0
k = 0
for i in range(1, SIZE * SIZE + 1):
array[j][k] = i
# 如果位于图4.2中①号转弯线上
if j + k == SIZE - 1:
# j>k,位于左下角
if j > k:
orient = 1
# 位于右上角
else:
orient = 2
# 如果位于图5.2中②号转弯线上
elif (k == j) and (k >= SIZE / 2):
orient = 3
# 如果j位于图5.2中③号转弯线上
elif (j == k - 1) and (k <= SIZE / 2):
orient = 0
# 根据方向来控制行索引、列索引的改变
# 如果方向为向下绕圈
if orient == 0:
j += 1
# 如果方向为向右绕圈
elif orient == 1:
k += 1
# 如果方向为向左绕圈
elif orient == 2:
k -= 1
# 如果方向为向上绕圈
elif orient == 3:
j -= 1
# 采用遍历输出上面的二维列表
for i in range(SIZE) :
for j in range(SIZE) :
print('%02d ' % array[i][j], end = "") #end=""默认不换行
print("") #换行
a = int(input("请输入一个整数:"))
a_circle(a)