Python旋转打印各种矩形的方法

  

打印旋转矩阵应该是很经典的算法问题了。

  

  

给定一个m * n要素的矩阵。按照螺旋顺序,返回该矩阵的所有要素。

  

1,先定义矩阵的左上和右下的坐标,然后通过两个坐标来打印这一圈矩阵;

  

2,将左上的坐标下右下移动,右下的坐标向左上移动,来缩小打印圈,进行下一圈矩阵的打印;

  

3,一直缩小打印直到结束。

  

<强>代码:

        def print_circle(矩阵,up_hang, up_lie、down_hang down_lie):   结果=[]      如果up_lie==down_hang down_hang==down_lie: #若只有一个元素   result.append(矩阵[up_hang] [up_lie])   elif up_lie==down_hang或up_lie==down_lie: #若只有一行或一列元素   如果up_lie==down_hang:   而up_lie & lt;=down_lie:   result.append(矩阵[up_hang] [up_lie])   up_lie +=1   elif up_lie==down_lie:   而up_hang & lt;=down_hang:   result.append(矩阵[up_hang] [up_lie])   up_hang +=1   #返回结果#注意对齐方式,其决定了作用的区间范围,很关键   返回结果   i=up_hang   j=up_lie   虽然j up_lie:   result.append(矩阵[我][j])   j -=1   虽然i> up_hang:   result.append(矩阵[我][j])   i -=1   返回结果      #矩阵=[(1、2、3),(4、5、6),(7 8 9)、(10、11、12),(13、14、15),[16、17、18]]   #矩阵=[[1、2、3、4、5),(6、7、8、9、10),(11、12、13、14、15)、(16、17、18、19、20],[21日,22日,23日,24日,25日]]   矩阵=[(1、2、3、4),(5、6、7、8),(9、10、11、12),(13、14、15、16))   #矩阵=[(1、2、3),(4、5、6),[7 8 9]]   #矩阵=[[1、2],[3,4]]   re_mat=[]   up_hang=0   up_lie=0   down_hang=3   down_lie=3   如果down_hang> down_lie:   国旗=down_lie   其他:   国旗=down_hang   而国旗!=0:#国旗决定了一个矩阵需要打印多少圈   temp=print_circle(矩阵,up_hang, up_lie、down_hang down_lie)   re_mat.extend(临时)   up_hang +=1   up_lie +=1   down_hang -=1   down_lie -=1   国旗=国旗/2   打印(re_mat)   之前      

<强>总结: python对于代码的对齐方式要求的比较严格,对齐方式直接决定了函数或者判断条件的作用域,要重视啊。

  

以上这篇Python旋转打印各种矩形的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

Python旋转打印各种矩形的方法