高中生学Python编程基础知识(4)

  • 3
  • 189 views
  • A+
所属分类:高中编程

内置函数 - 学习使用Python 3编程(基础知识)

您好,欢迎阅读本视频中Python3基础教程系列的第4部分,我们将继续构建我们的TicTacToe游戏。在我们离开的地方,我们的代码可以为我们至少显示起始游戏板:

 

game = [[0, 0, 0],
        [0, 0, 0],
        [0, 0, 0],]

for row in game:
    print(row)

输出:

[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
>>>

现在我们有了这个,TicTacToe游戏的下一步将是...有人想玩!所以,现在,我们必须想办法让玩家输入他们想要玩的地方。由于这个游戏是基于文本的,没有真正的用户界面,我们不能让玩家“点击”他们想要玩的地方。相反,我们可以利用这是一个网格的事实,让玩家以x,y的方式输入网格上的位置。

所以我想的是:

 

    1  2  3  1    2    3 
 1 [0, 0, 0]  1   [  0  ,   0  ,   0  ] 
 2 [0, 0, 0]  2   [  0  ,   0  ,   0  ] 
 3 [0, 0, 0]  3   [  0  ,   0  ,   0  ]

现在,如果我们向用户询问“你想在哪里播放?(行,列)”,用户可以输入类似1,2的内容。这会是哪里?第1行,第2列。这可能是:

 

    1  2  3  1    2    3  
1 [0, X, 0]  1   [  0  ,   X  ,   0  ] 
2 [0, 0, 0]  2   [  0  ,   0  ,   0  ]  
3 [0, 0, 0]  3   [  0  ,   0  ,   0  ]

好的。这就是我对如何做到这一点的想法,现在我们只需要编程吧!好的,所以这再次崩溃了。记得刚才TicTacToe的游戏显然只有四个步骤?

1.以某种方式可视化游戏

2.允许玩家进入移动

3.确保移动有效,如果没有则处理。

4.确定是否有胜利者。

好吧,事实证明......我们仍然在第一步,现在我们已经有了一些子步骤!很多编程都是这样的。您提出了宏步骤,然后开始处理宏步骤,这些步骤包含您需要以相同方式分解的子步骤。

高中生学Python编程基础知识(4)

我们怎么能打破这些呢?好吧,我们想要在游戏板的顶部和侧面添加一些数字。最高的数字非常简单。我们可以......打印出来。我们先做吧!

 

 game = [[0, 0, 0],  =   [[  0  ,   0  ,   0  ],      
    [0, 0, 0],  [  0  ,   0  ,   0  ],      
    [0, 0, 0],]  [  0  ,   0  ,   0  ],] 
 print(" 0  1  2")  print  (  " 0  1  2"     for row in game:  for   row   in   game  :      print(row)  print  (  row
  0  1  2  0    1    2  
[0, 0, 0]  [  0  ,   0  ,   0  ]  
[0, 0, 0]  [  0  ,   0  ,   0  ]  
[0, 0, 0]  [  0  ,   0  ,   0  ]  >>>   >>>

注意我从0开始,而不是1.在编程中,“计数”从0开始。我们可以从1开始播放器的可视化,但稍后我们需要减去一个输入。如果你想这样做,这完全没问题,但我会这样做,以便现在保持简单。好的,右手边呢?

这是程序员使用基本工具执行任何操作的能力的完美示例,即使有更多用于此目的的高级工具也是如此。首先,我们可以创建一些简单的计数器。

在我们之前forloop,我们可以加入count=0。然后,在循环中,我们可以print(count,row)。然后,在那之下,做count+=1。Whooooaa那里有什么+=东西?!?!

有点像count+=1做的一样count=count+1。这只是添加内容的快捷方式。你也可以这样做count+=5,每个循环添加5个。最后,您还可以执行所有其他操作,如*=或-=或/=。好的,回到正轨这里是我们的代码:

 

 game = [[0, 0, 0],  =   [[  0  ,   0  ,   0  ],     
     [0, 0, 0],  [  0  ,   0  ,   0  ],      
    [0, 0, 0],]  [  0  ,   0  ,   0  ],] 
 print(" 0  1  2")  print  (  " 0  1  2"     count = 0  =   0  for row in game:  for   row   in   game  :      print(count, row)  print  (  count  ,   row         count += 1  +=   1

输出:

 

  0  1  2  0    1    2  
0 [0, 0, 0]  0   [  0  ,   0  ,   0  ] 
 1 [0, 0, 0]  1   [  0  ,   0  ,   0  ] 
 2 [0, 0, 0]  2   [  0  ,   0  ,   0  ]  >>>   >>>

好的,我们的顶行没有对齐,因为我们在它下面的行中添加了更多文本。没什么大不了的,再加2个空格:

 

 game = [[0, 0, 0],  =   [[  0  ,   0  ,   0  ],     
     [0, 0, 0],  [  0  ,   0  ,   0  ],         
 [0, 0, 0],]  [  0  ,   0  ,   0  ],] 
 print("   0  1  2")  print  (  "   0  1  2"     count = 0  =   0  for row in game:  for   row   in   game  :      print(count, row)  print  (  count  ,   row         count += 1  +=   1 
    0  1  2  0    1    2  
0 [0, 0, 0]  0   [  0  ,   0  ,   0  ] 
1 [0, 0, 0]  1   [  0  ,   0  ,   0  ]  
2 [0, 0, 0]  2   [  0  ,   0  ,   0  ]  >>>   >>>

不错,看起来不错!我们解决了这个任务就好了。这段代码足够快,而且逻辑合理。......但还有更好的方法。这是与enumerate。Enumerate()是Python的另一个内置函数,它是一个更“花哨”的工具之一,确实很高兴拥有和知道,但你实际上并不需要它来完成工作。当你打算一起迭代几个迭代时,它确实变得特别有用,尽管也有很多方法(包括使用花哨的工具)来做到这一点!快速学习编程的一件事是,有很多方法可以做某事,而人们可以通过各种方式获得所有部落。底线是:制作东西!它永远不会是完美的。几乎所有你编写的代码都会有bug,它不会像它那样快。如果你对此感到困惑,你将永远不会真正生产出一些东西,那真是太棒了!

无论如何,enumerate让我们看一下,好吗?所有这一切都是在迭代时返回项目及其索引值。这允许我们删除2行代码,只需修改一行即可实现相同的目标。我们forloop现在是:

 

 for count, row in enumerate(game):   count  ,   row   in   enumerate  (  game   :      print(count, row)  print  (  count  ,   row

而已!由于枚举是一个function,它具有return事物的能力。在这种情况下,枚举函数返回索引和项。我们可以做unpack这里所谓的unpack这些,并将它们变成元组形式,就像我们在上面所做count,row的一样forloop。完整代码:

 game = [[0, 0, 0],  =   [[  0  ,   0  ,   0  ],      
    [0, 0, 0],  [  0  ,   0  ,   0  ],       
   [0, 0, 0],]  [  0  ,   0  ,   0  ],] 
 print("   0  1  2")  print  (  "   0  1  2"    
 for count, row in enumerate(game):  for   count  ,   row   in   enumerate  (  game   :      print(count, row)  print  (  count  ,   row

结果:

    0  1  2  0    1    2  
0 [0, 0, 0]  0   [  0  ,   0  ,   0  ]  
1 [0, 0, 0]  1   [  0  ,   0  ,   0  ] 
2 [0, 0, 0]  2   [  0  ,   0  ,   0  ]  >>>   >>>

很酷!对于什么function是我们可能仍然有点模糊,这没关系。我们将在第6部分中更深入地介绍功能。但是现在,我们已经有了游戏板。看起来它已经准备好让玩家玩了。如果我们说第0行第2列,我们希望它是:

 

   0  1  2
0 [0, 0, X]
1 [0, 0, 0]
2 [0, 0, 0]

那么现在,如果我们从用户那里收到这个意图,我们如何实际标记呢?我们在下一个教程中谈谈这个问题!

avatar

发表评论

您必须才能发表评论!

目前评论:3   其中:访客  3   博主  0

    • avatar 星悦妈 1

      谢谢楼主分享

      • avatar 未知 1

        还有没有更多的python知识啊

          • avatar administrators 1

            @未知 有后面会介绍很多python的基础知识