美文网首页程序员《做与学系列》
疯狂的Python-08(三子棋之一步取胜法)

疯狂的Python-08(三子棋之一步取胜法)

作者: 景行1023 | 来源:发表于2018-09-08 11:59 被阅读1次

一些有趣的鲜为人知的Python特性集合

无论你是Python新手还是Python老手,我相信,这个系列的文章都会让你获益良多!

阅读此系列任何文章前请务必观看:疯狂的Python-目录大纲


▶ 三子棋之一步取胜法

# 首先先来初始化一个1*3的一维数组
row = [""]*3 #row i['', '', '']
# 然后再用二维数组模拟一个3*3的棋盘
board = [row]*3

Output:

>>> board
[['', '', ''], ['', '', ''], ['', '', '']]
>>> board[0]
['', '', '']
>>> board[0][0]
''
>>> board[0][0] = "X"
>>> board
[['X', '', ''], ['X', '', ''], ['X', '', '']]

我们只赋值了一个“X”为什么会出来三个呢?

💡 解释:

当我们初始化row变量的时候,下图显示的是内存中的变化

after_row_initialized.png

接着当变量board通过[row]*3初始化后,下图显示了内存的变化(其实最终每一个变量board[0],board[1],board[2]都引用了同一个row对象的内存地址)

after_board_initialized.png

我们可以通过不使用row变量来阻止这种情况的发生

>>> board = [['']*3 for _ in range(3)]
>>> board[0][0] = "X"
>>> board
[['X', '', ''], ['', '', ''], ['', '', '']]

相关文章

  • 疯狂的Python-08(三子棋之一步取胜法)

    一些有趣的鲜为人知的Python特性集合 无论你是Python新手还是Python老手,我相信,这个系列的文章都会...

  • 五子棋讲义(4)随时准备连续进攻

    五子棋讲义(3)可以连续进攻取胜的棋形中,我们了解了八种可以连续进攻取胜的棋形: 然而,五子棋是双方轮流落子的,要...

  • 2018-05-08

    好玩的“三子棋” 观察背景: 棋类区是班级男孩子喜欢的区域之一,结合幼儿的兴趣点,我们投放进了五子棋供幼儿摆摆放放...

  • 三子棋实战

    主程序 头文件 函数封装文件

  • React 三子棋小游戏

    demo来源:react教程 - 三子棋游戏 目录结构 Quick start npx create-react-...

  • 职场美人纪 | 做一个“走一步看三步”的姑娘

    宝贝儿子学围棋,老师说一个下棋用语:“走一步、看三步“,意思是高手下一步棋,能判断后面三手棋的基本走法。孩子问,...

  • 三子棋小游戏

    写在开头: 本人初入iOS,想借此系列的文章记录自己的学习过程,同时也和大家分享一些学习心得,作为一个刚学编程的新...

  • 天下如棋,人生如戏

    玩过王者荣耀的人都知道,法刺型英雄诸葛亮有一句台词:“天下如棋,一步三思”。或许,应该是天下如棋,人生如戏,一步三...

  • C++实现的基于α-β剪枝算法的井字棋游戏

    一、井字棋游戏规则 “井字棋”游戏(又叫“三子棋”),是一款十分经典的益智小游戏,操作简单,娱乐性强。两个玩家,一...

  • 使用Vue CLI脚手架一键搭建项目——井字棋

    3×3连子棋(也叫做井字棋)其实还并不算复杂,3×3的棋盘最多可以放9个棋子,一旦有一方连成三子,则此局棋结束。现...

网友评论

    本文标题:疯狂的Python-08(三子棋之一步取胜法)

    本文链接:https://www.haomeiwen.com/subject/ugogwftx.html