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 相关文章推荐
rhythmbox中文名乱码问题解决方法
Sep 06 Python
python处理csv数据动态显示曲线实例代码
Jan 23 Python
Request的中断和ErrorHandler实例解析
Feb 12 Python
pandas 空的dataframe 插入列名的示例
Oct 30 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
Dec 02 Python
对Python 语音识别框架详解
Dec 24 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
Jan 05 Python
python3中类的继承以及self和super的区别详解
Jun 26 Python
Python为何不能用可变对象作为默认参数的值
Jul 01 Python
python线程的几种创建方式详解
Aug 29 Python
Python实现AI自动抠图实例解析
Mar 05 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
May 22 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
PHP中Date()时间日期函数的使用方法小结
2011/04/20 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
解读PHP的Yii框架中请求与响应的处理流程
2016/03/17 PHP
PHP查询附近的人及其距离的实现方法
2016/05/11 PHP
PHP静态成员变量和非静态成员变量详解
2017/02/14 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
2017/09/29 PHP
详解PHP队列的实现
2019/03/14 PHP
JAVASCRIPT下判断IE与FF的比较简单的方式
2008/10/17 Javascript
原生JS实现表单checkbook获取已选择的值
2013/07/21 Javascript
自己封装的javascript事件队列函数版
2014/06/12 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
2015/08/25 Javascript
JS实现alert中显示换行的方法
2015/12/17 Javascript
JS实现的多张图片轮流播放幻灯片效果
2016/07/22 Javascript
jQuery实现的兼容性浮动层示例
2016/08/02 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
2017/03/17 Javascript
详解Angular2组件之间如何通信
2017/06/22 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
2018/05/04 Javascript
vuejs简单验证码功能完整示例
2019/01/08 Javascript
JavaScript链式调用原理与实现方法详解
2020/05/16 Javascript
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
[47:52]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第二场 11.26
2020/11/30 DOTA
进一步探究Python的装饰器的运用
2015/05/05 Python
Python实现周期性抓取网页内容的方法
2015/11/04 Python
python实现人民币大写转换
2018/06/20 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
2018/12/07 Python
Python实现钉钉发送报警消息的方法
2019/02/20 Python
Python配置虚拟环境图文步骤
2019/05/20 Python
Python实现哲学家就餐问题实例代码
2020/11/09 Python
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
行政人员岗位职责
2013/12/08 职场文书
趣味活动策划方案
2014/02/08 职场文书
科研课题实施方案
2014/03/18 职场文书
人代会简报
2015/07/21 职场文书
大学生自我鉴定怎么写
2019/05/07 职场文书