我是python的初学者,并且从“使用Python自动化无聊的东西”中学习python。

我不明白如何在井字游戏中将新功能应用于字典。

谢谢


为什么必须在board中包含参数def printBoard(board)
为什么我们需要在board之前添加board['top-L']?我不明白该功能为何起作用,因为前一行仅定义了theBoard,而没有定义board


theBoard = {'top-L': 'O', 'top-M': 'O', 'top-R': 'O', 'mid-L': 'X', 'mid-M':'X', 'mid-R': ' ', 'low-L': ' ', 'low-M': ' ', 'low-R': 'X'}

def printBoard(board):
   print(board['top-L'] + '|' + board['top-M'] + '|' + board['top-R'])
   print('-+-+-')
   print(board['mid-L'] + '|' + board['mid-M'] + '|' + board['mid-R'])
   print('-+-+-')
   print(board['low-L'] + '|' + board['low-M'] + '|' + board['low-R'])
printBoard(theBoard)

最佳答案

要回答您的问题:


我们需要在printBoard中包含参数“ board”。通常,不保证字典“ theBoard”在功能范围内(也可以访问)。为了使此代码尽可能通用,并允许它以这种通用格式打印字典,我们需要将要打印的字典作为参数传递给函数。但是,如果要从其他文件/模块导入此函数,则会遇到一些问题:该函数将无法找到名为“ theBoard”的变量。这在像Python这样的语言中不太清楚,并且如果您将上面对“ board”的引用替换为“ theBoard”,那么这确实可以工作,因为“ theBoard”属于全局范围。
同样,函数定义中的“木板”指代您作为参数传入的任何东西。在这种情况下,它是字典theBoard。要看到这一点,请注意函数调用printBoard(theBoard)是执行打印的实际行。因此,想象一下,如果函数定义主体中对参数board的每个引用实际上都是对字典theBoard.的引用,


换句话说,我会阅读/练习编程语言中的范围定义的概念,我相信这将使此示例不那么混乱。

10-06 01:55