python螺旋数字矩阵的实现示例
作者:大巫的小巫
本文介绍了使用Python生成一个螺旋数字矩阵,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
python螺旋数字矩阵
给出数字个数n (0<n ≤999)和行数m (0<m ≤ 999)。从左上角的1开始,按照顺时针螺旋向内写方式,输出1-n,依次写出2,3.….,最终形成一个m行的矩阵。
1.每行数字的个数一样多
2.列的数量尽可能少
3.填充数字时优先填充外部
4.数字不够时,使用单个*号占位
def getRes(n, m): num_size = n rows = m cols, _ = divmod(n, m) cols = cols + 1 if _ else cols # 列数 res = [['*'] * cols for _ in range(rows)] # 初始化m行的矩阵 i, j = 0, 0 directions = [(0, 1), (1, 0), (0, -1), (-1, 0)] # 四个方向依次为:右,下,左,上 direction_index = 0 # 表示当前走的方向,随i和j的变化而变化 for num in range(num_size): number = num + 1 res[i][j] = str(number) # 为了后面拼接字符串,所以转str nxt_i, nxt_j = directions[direction_index][0] + i, directions[direction_index][1] + j # 按照当前方向时,下一个坐标位置 if not (0 <= nxt_i < rows and 0 <= nxt_j < cols and res[nxt_i][nxt_j] == '*'):# 表示走的方向的改变。当下一个坐标位置出了边界时,或者未到边界但是下一个位置的值不是*,也就是已被填充时,改变方向 direction_index = (direction_index + 1) % 4 i, j = i + directions[direction_index][0], j + directions[direction_index][1] for values in res: print('\t'.join(values)) getRes(9, 4)
n=9,m=4
n=17,m=6
n=55,m=9
到此这篇关于python螺旋数字矩阵的实现示例的文章就介绍到这了,更多相关python螺旋数字矩阵内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!