python螺旋数字矩阵的实现示例

 更新时间:2024年12月30日 11:24:02   作者:大巫的小巫  
本文介绍了使用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螺旋数字矩阵内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • python opencv实现灰度图和彩色图的互相转换

    python opencv实现灰度图和彩色图的互相转换

    这篇文章主要给大家介绍了关于python opencv实现灰度图和彩色图的互相转换,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-01-01
  • python 环境安装及编辑器配置方法小结

    python 环境安装及编辑器配置方法小结

    这篇文章主要介绍了python 环境安装及编辑器配置方法小结的相关资料,需要的朋友可以参考下
    2021-06-06
  • 基于Python解密仿射密码

    基于Python解密仿射密码

    这篇文章主要介绍了基于Python解密仿射密码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Python使用PySide6编写一个CSV文件浏览器

    Python使用PySide6编写一个CSV文件浏览器

    这篇文章主要为大家详细介绍了如何使用 PySide6 创建一个简单的图形用户界面(GUI)应用程序,用于浏览 CSV 文件中的数据,感兴趣的小伙伴可以了解下
    2025-07-07
  • pyecharts结合flask框架的使用

    pyecharts结合flask框架的使用

    这篇文章主要介绍了pyecharts结合flask框架,主要是介绍如何在Flask框架中使用pyecharts,本文通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • 树莓派4B安装Tensorflow的方法步骤

    树莓派4B安装Tensorflow的方法步骤

    这篇文章主要介绍了树莓派4B安装Tensorflow的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Python3.4解释器用法简单示例

    Python3.4解释器用法简单示例

    这篇文章主要介绍了Python3.4解释器用法,结合简单实例形式分析了Windows与Linux系统环境中Python3.4解释器的简单使用方法,需要的朋友可以参考下
    2019-03-03
  • 不知道这5种下划线的含义,你就不算真的会Python!

    不知道这5种下划线的含义,你就不算真的会Python!

    Python是一种高级程序语言,其核心设计哲学是代码可读性和语法,能够让程序员用很少的代码来表达自己的想法。这篇文章主要介绍了不知道这5种下划线的含义,你就不算真的会Python!对此标题感兴趣的朋友一起阅读本文吧
    2018-10-10
  • Pandas 数据框增、删、改、查、去重、抽样基本操作方法

    Pandas 数据框增、删、改、查、去重、抽样基本操作方法

    下面小编就为大家分享一篇Pandas 数据框增、删、改、查、去重、抽样基本操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • 利用Python实现命令行版的火车票查看器

    利用Python实现命令行版的火车票查看器

    当你想查询一下火车票信息的时候,你还在上12306官网吗?或是打开你手机里的APP?下面让我们来用Python写一个命令行版的火车票查看器, 只要在命令行敲一行命令就能获得你想要的火车票信息!如果你刚掌握了Python基础,这将是个不错的小练习。
    2016-08-08

最新评论