python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等


Posted in Python onJuly 19, 2019

相信大家都做过九宫格的游戏,规则是要求填数字1-9在九个方格内,使横竖斜相加和相等。只填九个那可能有些简单,但是填25个,填49个,81个等奇数个那,这时候就要求我们去找其中的规律。找到规律又要如何用代码实现?

希望大家看代码之前,先来看下这个口诀:

首居上行正中央,依次斜向右上方,上出框时往下写,右出框时左边放,排重退回下格填,右上排重一个样。

释义:1要放在第一行的正中央,每次按依次向上的格式去填值,如果超出上边框就把它竖直往下移到最后一行,如果超出右边框就把它横着移动到最左边,在移动过程中如果要移动的地方已经存在值,就把这个放到前一个数字的下面,如果上边框和右边框都超过啦,就和排重一样,也把这个放到前一个数字的下面。过程如下图所示

python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等

代码如下:

#!/usr/bin/env python3
#-*- coding:utf-8 -*-
num = int(input('请输入一个奇数:'))
# 定义一个长为num的列表
high = [[0] * num ]
# 先定义一个num*num的一个列表,之后在往里面赋值
for i in range(num-1):
  high += [[0]*num]
n = 1
# 先确定第一行中间值为1
high[0][num//2] = n
x = 0
y = num//2
# 依次向high列表赋值从2开始
for j in range(1,num*num):
  # x表示第几行,y表示第几列,j表示x,y坐标的值
  j = j + 1
  x = x - 1 
  y = y + 1
  # 判断符合哪几种可能性
  if y > (num - 1) and x < 0 :
   x = x + 2
   y = y - 1
   high[x][y]=j
  elif x < 0 :
   x = num - 1 
   high[x][y]=j
  elif y > num-1 :
   y = 0
   high[x][y]=j
  else:
   if high[x][y] == 0 :
     high[x][y]=j
   elif high[x][y] != 0 :
     x = x + 2
     y = y - 1
     high[x][y]=j
# 依次把high列表中值打印出来
for a in range(num):
  for b in range(num):
   # rjust表示输出01,02,03等这种格式,可看我上篇博文介绍
   print( str(high[a][b]).rjust(2,'0'),end=' ') 
  print()

思路:

主要还是理解最上面的那段口诀,口诀理解啦,代码也就懂啦

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 代码性能优化技巧分享
Aug 07 Python
Python文件夹与文件的操作实现代码
Jul 13 Python
Python处理PDF及生成多层PDF实例代码
Apr 24 Python
Python中的函数作用域
May 07 Python
神经网络相关之基础概念的讲解
Dec 29 Python
Django1.11配合uni-app发起微信支付的实现
Oct 12 Python
python实现异常信息堆栈输出到日志文件
Dec 26 Python
tf.concat中axis的含义与使用详解
Feb 07 Python
TensorFlow实现checkpoint文件转换为pb文件
Feb 10 Python
使用Matplotlib绘制不同颜色的带箭头的线实例
Apr 17 Python
如何使用flask将模型部署为服务
May 13 Python
Python基本数据类型之字符串str
Jul 21 Python
Django REST framework 视图和路由详解
Jul 19 #Python
Django使用模板后无法找到静态资源文件问题解决
Jul 19 #Python
Django模板Templates使用方法详解
Jul 19 #Python
python GUI图形化编程wxpython的使用
Jul 19 #Python
Django 外键的使用方法详解
Jul 19 #Python
python原类、类的创建过程与方法详解
Jul 19 #Python
Django 全局的static和templates的使用详解
Jul 19 #Python
You might like
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
2009/03/13 PHP
PHP数组排序函数合集 以及它们之间的联系分析
2013/06/27 PHP
PHP连接MySQL的2种方法小结以及防止乱码
2014/03/11 PHP
分析php://output和php://stdout的区别
2018/05/06 PHP
[原创]js与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
2007/03/12 Javascript
只需一行代码,轻松实现一个在线编辑器
2013/11/12 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
函数window.open实现关闭所有的子窗口
2015/08/03 Javascript
理解js对象继承的N种模式
2016/01/25 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
通过jsonp获取json数据实现AJAX跨域请求
2017/01/22 Javascript
vue resource post请求时遇到的坑
2017/10/19 Javascript
10分钟上手vue-cli 3.0 入门介绍
2018/04/04 Javascript
JavaScript调用模式与this关键字绑定的关系
2018/04/21 Javascript
jQuery实现的简单日历组件定义与用法示例
2018/12/24 jQuery
LayUI switch 开关监听 获取属性值、更改状态的方法
2019/09/21 Javascript
vue在路由中验证token是否存在的简单实现
2019/11/11 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
2020/02/14 Javascript
微信小程序实现比较功能的方法汇总(五种方法)
2020/03/07 Javascript
Vue Elenent实现表格相同数据列合并
2020/11/30 Vue.js
Python中%是什么意思?python中百分号如何使用?
2018/03/20 Python
Python列表生成式与生成器操作示例
2018/08/01 Python
python根据文章标题内容自动生成摘要的实例
2019/02/21 Python
基于python if 判断选择结构的实例详解
2019/05/06 Python
python多进程间通信代码实例
2019/09/30 Python
sklearn+python:线性回归案例
2020/02/24 Python
详解css3中 text-fill-color属性
2019/07/08 HTML / CSS
AmazeUI中各种的导航式菜单与解决方法
2020/08/19 HTML / CSS
全球知名提供各类营养保健品的零售商:Vitamin Shoppe
2016/10/09 全球购物
JPA的优势都有哪些
2013/07/04 面试题
锅炉工岗位职责
2015/02/13 职场文书
党员个人自我评价
2015/03/03 职场文书
2015教师节通讯稿
2015/07/20 职场文书
关于公司年会的开幕词
2016/03/04 职场文书
canvas绘制折线路径动画实现
2021/05/12 Javascript