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程序设计入门(4)模块和包
Jun 16 Python
python里大整数相乘相关技巧指南
Sep 12 Python
Python使用smtplib模块发送电子邮件的流程详解
Jun 27 Python
Python中的错误和异常处理简单操作示例【try-except用法】
Jul 25 Python
对Python 数组的切片操作详解
Jul 02 Python
Python面向对象之类和对象属性的增删改查操作示例
Dec 14 Python
Tensorflow设置显存自适应,显存比例的操作
Feb 03 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
Feb 29 Python
Android Q之气泡弹窗的实现示例
Jun 23 Python
解决python3中os.popen()出错的问题
Nov 19 Python
python爬虫利用代理池更换IP的方法步骤
Feb 21 Python
pytorch训练神经网络爆内存的解决方案
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判断浏览器的类型和语言的函数代码
2013/02/28 PHP
php实现RSA加密类实例
2015/03/26 PHP
php微信公众号开发(3)php实现简单微信文本通讯
2016/12/15 PHP
javascript入门基础之私有变量
2010/02/23 Javascript
JS 类型转换常见方法小结
2010/05/31 Javascript
JavaScript Chart 插件整理
2010/06/18 Javascript
javascript 回到顶部效果的实现代码
2014/02/17 Javascript
javascript中的循环语句for语句深入理解
2014/04/04 Javascript
js调试系列 控制台命令行API使用方法
2014/06/18 Javascript
JavaScript数据结构与算法之集合(Set)
2016/01/29 Javascript
JS判断日期格式是否合法的简单实例
2016/07/11 Javascript
JavaScript SHA512加密算法详细代码
2016/10/06 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
EasyUI实现下拉框多选功能
2017/11/07 Javascript
vue富文本框(插入文本、图片、视频)的使用及问题小结
2018/08/17 Javascript
React+Antd+Redux实现待办事件的方法
2019/03/14 Javascript
JavaScrip数组去重操作实例小结
2019/06/20 Javascript
vue.js中ref和$refs的使用及示例讲解
2019/08/14 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
js实现复制粘贴的两种方法
2020/12/04 Javascript
[02:27]《DAC最前线》之附加赛征程
2015/01/29 DOTA
Python 数据结构之队列的实现
2017/01/22 Python
Python用threading实现多线程详解
2017/02/03 Python
DataFrame 将某列数据转为数组的方法
2018/04/13 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
2020/05/09 Python
浅谈Python中文件夹和python package包的区别
2020/06/01 Python
Python调用ffmpeg开源视频处理库,批量处理视频
2020/11/16 Python
python3爬虫中多线程的优势总结
2020/11/24 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
adidas菲律宾官网:adidas PH
2020/02/07 全球购物
俄罗斯连接商品和买家的在线平台:goods.ru
2020/11/30 全球购物
物业工程部经理岗位职责
2015/04/09 职场文书
学校党支部公开承诺书
2015/04/30 职场文书
525心理健康活动总结
2015/05/08 职场文书
Java中的随机数Random
2022/03/17 Java/Android