Python小实验——数独游戏

1)简化迭代模型-->填充数字

引入itertools.product()函数能够把之前需要两层以上迭代才能完成的工作用一层迭代就完成

>>> print list(product([1,2,3],[3,4]))

[(1, 3), (1, 4), (2, 3), (2, 4), (3, 3), (3, 4)]

>>>

>>> print list(product([1,2,3],repeat = 2))

[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]

2)拷贝,copy函数-->打印数独列表

在介绍我们的打印函数之前,先介绍一下我们即将要完成的函数中要用到的 copy.deepcopy() 函数。

>>> a = list(range(5))

>>> print a

[0, 1, 2, 3, 4]

>>> b = a

>>> a[3] = 7

>>>

>>> print b

[0, 1, 2, 7, 4]

Python 中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块。

>>> a = list(range(5))

>>> print a

[0, 1, 2, 3, 4]

>>> import copy

>>> b = copy.deepcopy(a)

>>> a[3] = 7

>>> print b

[0, 1, 2, 3, 4]

这次的赋值不再单单传递了一个 变量a 的引用,而是实实在在的为 变量b 分配了内存空间。

3)方便单位调用-->打印数独列表

这里用到了print.format()函数,举例说明:

>>> print '{} and {}'.format('spam', 'eggs')

spam and eggs

但是在代码中我们运用了更加高级的技巧

print("||  {}  |  {}  |  {}  ||  {}  |  {}  |  {}  ||  {}  |  {}  |  {}  ||"

.format(*(cell or ' ' for cell in line)))

每一个 "{}" 都对应了一个 cell 变量。而format()函数中的 * 号,则是将所有的 cell 的不同值放入一个元组 tuple 之中,方便format函数调用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 12,227评论 1 118
  • Python 是一种相当高级的语言,通过 Python 解释器把符合语法的程序代码转换成 CPU 能够执行的机器码...
    Python程序媛阅读 5,937评论 0 3
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,351评论 0 33
  • 还在驾校,微信发过来一条消息。那是一张大山里的图片与一句山里的孩子回来了。山里的孩子——孙海刚 孙海刚,常州信息学...
    凡心未了阅读 1,644评论 0 0
  • 1、 我也曾经有过自己一段无疾而终的情感,虽然在岁月中留点遗憾,纵然深刻,回想起来却仍是一个好心情,以至于今天相见...
    西门豹阅读 3,914评论 1 3