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编程-将Python程序转化为可执行程序[整理]
Apr 09 Python
Python实现基于HTTP文件传输实例
Nov 08 Python
Windows下为Python安装Matplotlib模块
Nov 06 Python
PyQt5每天必学之组合框
Apr 20 Python
详解python 爬取12306验证码
May 10 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
Jan 16 Python
python yield和Generator函数用法详解
Feb 10 Python
pycharm无法导入本地模块的解决方式
Feb 12 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
Mar 18 Python
Jupyter加载文件的实现方法
Apr 14 Python
Python读取excel文件中带公式的值的实现
Apr 17 Python
Django 解决开发自定义抛出异常的问题
May 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
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
PHP 身份证号验证函数
2009/05/07 PHP
phpmyadmin3 安装配置图解教程
2012/03/29 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
优化 JavaScript 代码的方法小结
2009/07/16 Javascript
jquery实用代码片段集合
2010/08/12 Javascript
40款非常有用的 jQuery 插件推荐(系列一)
2011/12/21 Javascript
通过length属性判断jquery对象是否存在
2013/10/18 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(基于jquery)
2015/11/18 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
2016/06/12 Javascript
Jquery中attr与prop的区别详解
2017/05/27 jQuery
JS实现静态页面搜索并高亮显示功能完整示例
2017/09/19 Javascript
jQuery实现IE输入框完成placeholder标签功能的方法
2017/09/20 jQuery
Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
2019/04/26 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
Vue登录拦截 登录后继续跳转指定页面的操作
2020/08/04 Javascript
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
python实现爬山算法的思路详解
2019/04/09 Python
Python的numpy库下的几个小函数的用法(小结)
2019/07/12 Python
详解python statistics模块及函数用法
2019/10/27 Python
如何使用python实现模拟鼠标点击
2020/01/06 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
Python运行异常管理解决方案
2020/03/09 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
python 邮件检测工具mmpi的使用
2021/01/04 Python
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
销售辞职报告范文
2014/01/12 职场文书
森林防火工作方案
2014/02/14 职场文书
财务部副经理岗位职责
2014/03/14 职场文书
公司新人试用期自我评价
2014/09/17 职场文书
2014年法制宣传日活动方案
2014/11/02 职场文书
2014年实习班主任工作总结
2014/11/08 职场文书
服务行业标语口号
2015/12/26 职场文书
检讨书之工作不认真
2019/08/14 职场文书
读《庄子》有感:美而不自知
2019/11/06 职场文书