Python实现螺旋矩阵

1,什么是螺旋矩阵?

类似:

1

1 2

4 3

1 2 3

8 9 4

7 6 5

1 2 3 4

12 13 14 5

11 16 15 6

10 9 8 7

2,如何去打印出这个螺旋矩阵?

以4* 4 矩阵为例:

第一:打印上面一层

1 2 3 4

第二:打印右边一层

1 2 3 4

    5

    6

    7

第三:打印下边一层

1 2 3 4

    5

    6

10 9 8 7

第四:打印左边一层

1 2 3 4

12 5

11 6

10 9 8 7

这样一圈就打印好了,然后重复上述步骤进行第二层的打印。

3,python 代码实现

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@File        :Spiralmatrix.py
@Description :
             Your input is 1
             1
             Your input is 2
             1 2
             4 3
             Your input is 3
             1 2 3
             8 9 4
             7 6 5
             Your input is 4:
             1  2  3  4
             12 13 14 5
             11 16 15 6
             10 9  8  7
@CreatTime   :2020/08/27 13:56:03
@Author      :Yunhgu
@Version     :1.0
'''
def Spiralmatrix(Dimension):
    # 定义一个二维矩阵
    array_lists = [[0 for j in range(Dimension)] for i in range(Dimension)]
    # 定义开始的值
    num = 1
    # 开始螺旋赋值
    for i in range(Dimension//2+1):  # 0 1 2
        # 上边赋值
        for j in range(i, Dimension-i): 
            array_lists[i][j] = num     
            num += 1
        # 右边赋值                    
        for j in range(i+1, Dimension-i):
            array_lists[j][Dimension-i-1] = num
            num += 1
        # 下边赋值
        for j in range(Dimension-i-2, i, -1):
            array_lists[Dimension-i-1][j] = num
            num += 1
        # 左边赋值
        for j in range(Dimension-i-1, i, -1):
            array_lists[j][i] = num
            num += 1
    # 打印结果
    for i in array_lists:
        for j in i:
            print(j, end='\t')
        print()

if __name__ == "__main__":
    num = int(input('please input num: '))
    Spiralmatrix(num)