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错误处理详解
Sep 28 Python
Python HTTP客户端自定义Cookie实现实例
Apr 28 Python
Python 正则表达式实现计算器功能
Apr 29 Python
python3设计模式之简单工厂模式
Oct 17 Python
Python数据分析库pandas基本操作方法
Apr 08 Python
Django项目中添加ldap登陆认证功能的实现
Apr 04 Python
使用pyecharts生成Echarts网页的实例
Aug 12 Python
python paramiko远程服务器终端操作过程解析
Dec 14 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
Mar 16 Python
Python利用PyPDF2库获取PDF文件总页码实例
Apr 03 Python
Keras中 ImageDataGenerator函数的参数用法
Jul 03 Python
Python读写压缩文件的方法
Jul 30 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框架功能对照表
2014/10/23 PHP
PHP递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
基于jQuery判断两个元素是否有重叠部分的代码
2012/07/25 Javascript
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
2012/08/14 Javascript
JQEasy-ui在IE9以下版本中二次加载的问题分析及处理方法
2014/06/23 Javascript
JavaScript+canvas实现七色板效果实例
2016/02/18 Javascript
js下将金额数字每三位一逗号分隔
2016/02/19 Javascript
微信小程序 video详解及简单实例
2017/01/16 Javascript
Javascript同时声明一连串(多个)变量的方法
2017/01/23 Javascript
BootStrap Datetimepicker 汉化的实现代码
2017/02/10 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
基于jQuery Ajax实现下拉框无刷新联动
2017/12/06 jQuery
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
解决koa2 ctx.render is not a function报错问题
2018/08/07 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
nodejs 递归拷贝、读取目录下所有文件和目录
2019/07/18 NodeJs
JS面向对象编程基础篇(三) 继承操作实例详解
2020/03/03 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
Vue实现点击当前行变色
2020/12/14 Vue.js
Python批量删除只保留最近几天table的代码实例
2019/04/01 Python
解决Python中pandas读取*.csv文件出现编码问题
2019/07/12 Python
Python操作SQLite数据库过程解析
2019/09/02 Python
Django ORM filter() 的运用详解
2020/05/14 Python
浅谈CSS3特性查询(Feature Query: @supports)功能简介
2017/07/31 HTML / CSS
医科学校毕业生自荐信
2013/11/09 职场文书
高职教师岗位职责
2013/12/24 职场文书
大学生创业计划书的用途
2014/01/08 职场文书
《鲁班和橹板》教学反思
2014/04/27 职场文书
毕业生自荐信范文
2015/03/05 职场文书
六一晚会主持词开场白
2015/05/28 职场文书
与死神共舞观后感
2015/06/15 职场文书
2019年亲子运动会口号
2019/10/11 职场文书
Win11任务栏太宽了怎么办?一招解决Win11任务栏太宽问题
2021/11/21 数码科技
基于PostgreSQL/openGauss 的分布式数据库解决方案
2021/12/06 PostgreSQL
Python实现Hash算法
2022/03/18 Python
Java中的Kotlin 内部类原理
2022/06/16 Java/Android