我是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.
的引用,
换句话说,我会阅读/练习编程语言中的范围定义的概念,我相信这将使此示例不那么混乱。