Python函数-未定义全局变量
我参加了一门学习Python编程的课程。对于某项任务,我们必须编写我粘贴在下面的代码 这部分代码由两个函数组成,第一个是Python函数-未定义全局变量,python,Python,我参加了一门学习Python编程的课程。对于某项任务,我们必须编写我粘贴在下面的代码 这部分代码由两个函数组成,第一个是make_str_from_row,第二个是包含_row。正如您可能已经注意到的,第二个函数重用了第一个函数。我已经传递了第一个函数,但是我不能传递第二个函数,因为当它必须重用时,它会给出关于第一个函数的错误,这是令人困惑的,因为我的第一个函数没有得到任何错误。它表示未定义全局变量row\u index 顺便说一句,第二个函数是在启动程序代码中给出的,所以它不会出错。我不知道出
make_str_from_row
,第二个是包含_row
。正如您可能已经注意到的,第二个函数重用了第一个函数。我已经传递了第一个函数,但是我不能传递第二个函数,因为当它必须重用时,它会给出关于第一个函数的错误,这是令人困惑的,因为我的第一个函数没有得到任何错误。它表示未定义全局变量row\u index
顺便说一句,第二个函数是在启动程序代码中给出的,所以它不会出错。我不知道出了什么问题,特别是因为我已经通过了可能是错误的代码
我试着要求团队提供一些反馈,以防评分员出现错误,但已经一周了,截止日期还有2天,我没有得到回复。我不是在问答案,我只是想问某人对给定错误的解释,这样我就能自己找出解决方案。我真的很感激你的帮助
def makestrfromrow(board, rowindex):
""" (list of list of str, int) -> str
Return the characters from the row of the board with index row_index
as a single string.
>>> make_str_from_row([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], 0)
'ANTT'
"""
string = ''
for i in board[row_index]:
string = string + i
return string
def boardcontainswordinrow(board, word):
""" (list of list of str, str) -> bool
Return True if and only if one or more of the rows of the board contains
word.
Precondition: board has at least one row and one column, and word is a
valid word.
>>> board_contains_word_in_row([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], 'SOB')
True
"""
for row_index in range(len(board)):
if word in make_str_from_row(board, row_index):
return True
return False
您将参数命名为
rowindex
,但在函数体中使用名称row\u index
修理一个或另一个
演示,修复函数体中使用的名称以匹配参数:
>>> def makestrfromrow(board, rowindex):
... string = ''
... for i in board[rowindex]:
... string = string + i
... return string
...
>>> makestrfromrow([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], 0)
'ANTT'
请注意,此函数和BoardContainsWorldRow与docstring不一致;在那里,它们被命名为
make\u str\u from\u row
和board\u包含\u word\u row
。您的boardContainessWorldRow
函数使用的是make\u str\u from\u row
,而不是makestrfromrow
,因此您还必须纠正这一点;一个方向或另一个方向。您将参数命名为rowindex
,但在函数体中使用名称row\u index
修理一个或另一个
演示,修复函数体中使用的名称以匹配参数:
>>> def makestrfromrow(board, rowindex):
... string = ''
... for i in board[rowindex]:
... string = string + i
... return string
...
>>> makestrfromrow([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], 0)
'ANTT'
请注意,此函数和BoardContainsWorldRow与docstring不一致;在那里,它们被命名为
make\u str\u from\u row
和board\u包含\u word\u row
。您的boardContainessWorldRow
函数使用的是make\u str\u from\u row
,而不是makestrfromrow
,因此您还必须纠正这一点;一个方向或另一个方向。在发布Python问题时,您必须仔细检查缩进。您的代码示例显然是不完整的,在Python中,其他人通常不可能说出它们应该如何工作。提示:\uuu
(下划线)是相关的。你的makestrfromrow
肯定是一种冗长的方式来说”。加入(board[rowindex])
…在发布Python问题时,你绝对必须仔细检查缩进。您的代码示例显然是不完整的,在Python中,其他人通常不可能说出它们应该如何工作。提示:\uu
(下划线)是相关的。你的makestrfromrow
肯定是一个冗长的方式来说”。加入(board[rowindex])
…因为某种原因,这一定是在发布后发生的。我检查了我的代码,参数名和变量名都有下划线。你发布的错误与这个错误完全一致。我不明白。原始代码确实有下划线,因此它必须是另一个原因。@user2756101:然后在BoardContainsWorldRow
中也使用不带下划线的版本。你必须坚持这样或那样。不,我不是这个意思。所有代码都有下划线,我已经仔细检查过了。当我在这个网站上发布代码时,一些下划线消失了。所以下划线在正确的位置。我也刚刚收到了团队的反应,但他们说他们和我一样困惑,因为他们的代码与我的完全匹配,并且通过了所有测试。出于某种原因,这一定是在发布后发生的。我检查了我的代码,参数名和变量名都有下划线。你发布的错误与这个错误完全一致。我不明白。原始代码确实有下划线,因此它必须是另一个原因。@user2756101:然后在BoardContainsWorldRow
中也使用不带下划线的版本。你必须坚持这样或那样。不,我不是这个意思。所有代码都有下划线,我已经仔细检查过了。当我在这个网站上发布代码时,一些下划线消失了。所以下划线在正确的位置。我也刚刚收到了团队的反应,但他们说他们和我一样困惑,因为他们的代码与我的完全匹配,并且通过了所有测试。