目录

  1. 用Python解数独[0]
  2. 用Python解数独[1]:求每个单元格的行值域
  3. 用Python解数独[2]:求列值域和九宫格值域
  4. 用Python解数独[3]:求总值域
  5. 用Python解数独[4]:缩减值域
  6. 用Python解数独[5]:检测唯一值缩减值域
  7. 用Python解数独[6]:递归获得最终答案
  8. 用Python解数独[7]:递归(完结篇)

[2][1] 解决数独问题基本思路

  1. 求每个单元格的行值域

上回书说到,我们写了行值域函数,想获得第1行每个单元格的行值域,但是获得的结果与实际有偏差,那么原因是什么呢?

row 

我们可以借助VS Code[1]的调试工具,或者在函数里加print来看在运行过程中哪里出现了问题

通过调试工具,我们发现在遍历temp时,虽然我们不断在为j重新赋值,但是temp却一直没有变化
def 

同理,记上print后,我们发现我们在遍历temp时为j重新赋值,但temp的值没有发生变化

为什么?

简单的说,在遍历一个列表时,是不能改变列表中的值的,具体原因大家自行查询或者看这篇博客[2]

经过搜索,我们可以换一种方式遍历列表,这样就能在循环过程中修改列表值了

def 

执行一下代码,发现结果与预期相符

print

现在我们已经可以输入一行,然后输出这一行每个单元格的行值域。

下一步我们需要输入整个数独,然后整个数独每个单元格的行值域。

很简单,数独是一个二维数组,里面的每个元素就是一行,我们只要遍历数独这个数组,然后对每个元素执行rowValueRange函数,然后把每一行的输出保存在一个新列表就好了,代码

def 

我写了一个新的函数rowValueRange(),输入数独数组(soduku),然后用row_value_range这个列表保存每个元素(每行)的行值域,最后输出row_value_range也就是数独的行值域,我们来执行代码

for 

从最终结果来看,我们已经搞定了数独的行值域,但列值域和九宫格值域应该如何搞定呢?

数独里的每一行,就是数独的每一个元素,因此我们可以很方便的循环数组,然后输入每一行输出这一行的行值域。

但是列和九宫格呢?

列相当于选取每一行相同编号的元素组成新的列表(比如:第1列是选取每一行的第1个元素);

九宫格就更复杂一些,相当于根据某个规则选取相邻三行的9个元素,组成新列表(比如:第1个九宫格是选取前三行每行的前三个元素,共9个元素组成了九宫格)。

那么如何把我们发现的规律用代码来表达,求列值域和九宫格值域该怎么求,有没有捷径?

预知后事,且听下回分解。


下一篇链接:用Python解数独[2]:求列值域和九宫格值域

参考

  1. ^VS Code是微软公司出品的一款代码编辑器 https://code.visualstudio.com/
  2. ^详见博主给第一个留言的回复 https://blog.csdn.net/u013272574/article/details/84319661

delphi dbgrideh 遍历每一个单元格_用Python解数独[1]:求每个单元格的行值域相关推荐

  1. python deepcopy函数_用Python解数独[6]:递归获得最终答案

    目录 用Python解数独[0] 用Python解数独[1]:求每个单元格的行值域 用Python解数独[2]:求列值域和九宫格值域 用Python解数独[3]:求总值域 用Python解数独[4]: ...

  2. python递归求5!_用Python解数独[6]:递归获得最终答案

    import copy import time # 求每一行单元格行值域 def valueRange(row): temp = copy.deepcopy(row) row_value_range ...

  3. 用python设计数独的心得体会_使用python解数独

    偶然发现linux系统附带的一个数独游戏,打开玩了几把.无奈是个数独菜鸟,以前没玩过,根本就走不出几步就一团浆糊了. 于是就打算借助计算机的强大运算力来暴力解数独,还是很有乐趣的. 下面就记录一下我写 ...

  4. delphi dbgrideh 遍历每一个单元格_真香!我用Python 制作了一个迷宫游戏

    相信大家都玩过迷宫的游戏,对于简单的迷宫,我们可以一眼就看出通路,但是对于复杂的迷宫,可能要仔细寻找好久,甚至耗费数天,然后可能还要分别从入口和出口两头寻找才能找的到通路,甚至也可能找不到通路. 虽然 ...

  5. delphi dbgrideh 遍历每一个单元格_利用财务函数制作贷款计算器,让你了解还款的每一个细节...

    大家好我是践行计算机教育刘老师,今天跟大家分享利用财务函数可以制作贷款计算机,以方便了解还款过程中的每一个细节. 贷款示例效果图 制作贷款计算器 制作贷款计算器-计算每月还款额 在C6单元格中输入公式 ...

  6. java 读取excel 合并单元格_利用java读写Excel文件、合并单元格

    一般的页眉页脚都分为三个部分,左,中,右三部分,利用如下代码可实现插入页眉页脚 java 代码publicstaticvoidsetHeader(WritableSheet dataSheet,Str ...

  7. python 3标准库道格_《PYTHON 3标准库 [美] 道格·赫尔曼》[美] 道格·赫尔曼(Doug Hellmann)著【摘要 书评 在线阅读】-苏宁易购图书...

    商品参数 作者: [美] 道格·赫尔曼(Doug Hellmann)著 出版社:机械工业出版社 出版时间:. 版次:. 印次:. 印刷时间:. 页数:. 开本:. ISBN:9787111608950 ...

  8. python查询和替换一个文本字符串_【Python】python面试题

    一些Python面试题 1. (1)python下多线程的限制以及多进程中传递参数的方式 python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只 ...

  9. python编写一个投票计数器_用python编写计数器

    我正在用python为我的网页编写一个计数器.我的代码如下:#!/usr/bin/python print """#Content-type: text/html\r\n ...

最新文章

  1. jsp内置对象application
  2. cvpr 2017 re-id papers
  3. 深度学习-Tensorflow2.2-卷积神经网络{3}-卫星图像识别卷积综合实例(二分类)-13
  4. esp8266 接收udp广播_ESP8266_21基于ESP8266的一键配网
  5. java语言程序设计第六章答案_Java语言程序设计(邵丽萍编著)第六章.doc
  6. MVC过滤整个项目输入关键字
  7. E13- terminal is not big enough
  8. com 组件调用不起来_Spring Cloud Alibaba,分布式服务调用(四)
  9. pychar 设置字体随鼠标滚轮调整大小
  10. python 创建随机数专题
  11. jQuery创建、删除和修改html标签
  12. 网络安全-渗透测试前置知识
  13. 追赶法 matlab编程,科学网—数值分析----三对角方程组的追赶法matlab程序 - 殷春武的博文...
  14. c++操作打印机那些事
  15. 数据库从入门到精通01
  16. 什么是 GPU 加速的计算?
  17. 华为畅享9 plus鸿蒙系统,华为鸿蒙系统支持的手机型号_鸿蒙系统支持华为哪几款手机...
  18. 量子通信,永不陷落的安全堡垒?
  19. java软件工程师自我评价_java软件工程师自我评价
  20. [EDI实施案例] 耐世特/Nexteer DESADV报文的业务解读

热门文章

  1. PPT文件转avi/wmv/mpeg格式最好的软件
  2. 基区宽度调制效应(厄尔利(Early)效应)
  3. c++类的应用和权限
  4. 华为机试第10题python
  5. pyaudio与优美的声音
  6. vue 加载体验优化
  7. Android 性能优化
  8. 2个byte类型数据相加(转型问题的分析)
  9. 空间谱专题09:阵列信号建模方法
  10. Windows不能在本地计算机启动MongoDB,错误代码 100