最近在学习Python,遇到了如下题目:

给定4应该输出如下形式的数据
01  12  11  10
02  13  16  09
03  14  15  08
04  05  06  07

给定5,应该输出如下形式的数据
01  16  15  14  13
02  17  24  23  12
03  18  25  22  11
04  19  20  21  10
05  06  07  08  09

观察上面的矩阵不难看出,数字总是从第一个开始成螺旋状排列指导最中心,我称它为“螺旋矩阵”

找关键点

根据上图可以发现如下规律:

(1)位于1号线的行索引与列索引之和为 n-1

(2)位于2号线的行索引等于列索引

(3)位于3号线的行索引等于列索引-1

于是可以如下编码:

#!/usr/bin/python3"""
实现数字绕圈圈功能
"""SIZE = 7
# 创建一个长度为SIZE * SIZE的二维列表
array = [[0]*SIZE]
for i in range(SIZE - 1):array += [[0] * SIZE]
print(array)
# 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# 位于1号转弯线上if j + k == SIZE - 1:# j>k,位于左下角if j > k:orient = 1# 位于右上角else:orient = 2# 位于2号转弯线上elif (j == k) and (k >= SIZE / 2):orient = 3# 位于三号转弯线上elif (j == k - 1) and (k <= SIZE / 2):orient = 0# 根据方向控制行索、引列索引的改变# 如果方向为向下绕圈if orient == 0:j += 1# 如果是向右绕圈elif orient == 1:k += 1# 向上elif orient == 3:j -= 1# 向左else:k -= 1
# 采用遍历输出上面的二维表
for i in range(SIZE):for j in range(SIZE):print('\t%02d' % array[i][j], end="")print("")

Python学习之绕圈圈题相关推荐

  1. Python输出一个绕圈圈的矩阵

    一个小练习题,输出如下规律的数字矩阵,从一开始先向下,再向右,再向上,最后向左,依次类推,绕圈圈输出. 01 16 15 14 13  02 17 24 23 12  03 18 25 22 11  ...

  2. python绘制蟒蛇绕圈圈_Python学习之循环--绕圈圈(蛇形盘)

    效果图: 注意哦,右边多出来的一点不是程序有问题,是打印的时候我用的\t,但100,三个字符顶格的时候给顶出去的,我太懒了,不想再调输出格式了,就这么凑合看吧 实现代码: sum = int(inpu ...

  3. Python项目实战:绕圈圈面试题

    下面是来自某知名公司的一道"面试题":给定 4,应该输出如下形式的数据: 01 12 11 10 02 13 16 09 03 14 15 08 04 05 06 07 给定 5, ...

  4. Python学习笔记:第五站 转圈圈

    Python学习笔记 文章目录 Python学习笔记 第五站 转圈圈 1. range()函数的使用 2. while循环 3. for-in循环 4. break.continue与else语句 5 ...

  5. Python学习教程(Python学习路线):Python面试100题(二)

    Python学习教程(Python学习路线):面试题接着给大家整理! 16.<div class="nam">中国</div>,用正则匹配出标签里面的内容( ...

  6. python学习每日一题【20200226】python实现“分解质因数”的计算

    题目: 每日一练(2-26): 题目:将一个整数分解质因数.例如:输入90,打印出90=2*3*3*5 实现方法: 百度百科里对分解质因数的定义: 把一个合数分解成若干个质因数的乘积的形式,即求质因数 ...

  7. 大datatable 内存一直涨_听说你的爬虫一直在整站里循环绕圈圈爬取重复的数据?...

    今天 小帅b要跟你说说增量爬虫 是这样的当你去爬取某个网站的数据时 你会发现这些网站随着时间的推移会更新更多的网页数据 这时候你要爬取的是那些更新的网页数据 而不是又一次爬取整站的内容 对于一些稍微复 ...

  8. 假期怎么提升Python技能?100+编程题给你练~

    我一开始很喜欢python的哲学,然后买了一个<python学习手册>,简单的了解了一下python 不过因为没什么实际的需求,只是了解,后来自己做网站用了Django,然后又做了一个网站 ...

  9. python学习笔记目录

    人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...

最新文章

  1. linux 监控多台机器人,在钉钉群中创建机器人并设置安全策略
  2. 某全球零售客户:上马容器云 驾驭线上业务
  3. Visual Studio服务器控件被警告问题
  4. RabbitMQ教程C#版 “Hello World”
  5. opencv计算两数组的乘积_#剑指Offer#12. 构建乘积数组
  6. 知秋源码解读分享系列
  7. Oracle数据库创建表空间
  8. PDF文件分割电脑版怎么操作
  9. 服务器的运行速度突然变慢的原因一般有如下几个方面:
  10. 质量管理:PDCA循环
  11. asp.net开发wap程序必备:识别来访手机品牌型号【来源网络】
  12. 手机linux发短信的命令,用AT指令操作短信猫发短信
  13. 数字转换成中文汉字数字
  14. 图文介绍--光纤接口类型
  15. 设计,让交叉口更安全
  16. 什么是单点登录,实现单点登录的三种方法
  17. Arduino整型字符串互转
  18. 论文利器 || 复制PDF有换行?全自动帮你合并,还能自动翻译,论文+++
  19. GPDB插件安装工具之gppkg
  20. L2-L7全面的网络分析诊断

热门文章

  1. 【JavaWEB】项目实战-黑马面面
  2. 大数据开发学习:进行大数据开发课程有哪些
  3. win10 suse linux,Windows 10现已支持安装SUSE Linux子系统 附安装教程|蓝点网
  4. 飞腾cpu服务器浪潮信息,浪潮发布国产飞腾CPU服务器
  5. 爬虫问题小记 --- UnicodeEncodeError: 'gbk' codec can't encode character '\xa9' in position 25703: illegal
  6. 抖音如何能快速涨粉?
  7. 【C++】---日期计算器
  8. agv调度matlab程序,4款agv调度控制系统应用软件
  9. 雪花飘落代码java_JS实现的雪花飘落特效示例
  10. TOPSIS--优劣解距离法