我正在为一个游戏开发一个函数,我陷入了一个必须返回的函数,如果一个单词包含在一个板中。当它假设为True时,Python的shell会返回一个False条件。 这是我的身体功能:
def board_contains_word(board, word):
""" (list of list of str, str) -> bool
Return True if and only if word appears in board.
Precondition: board has at least one row and one column.
>>> board_contains_word([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], 'ANT')
True
"""
for word_index in range(len(board)):
if word in board:
return True
return False
答案 0 :(得分:0)
你有一个循环,但你忽略了循环计数器。您将每次迭代中的值设置为word_index
变量;你应该在循环中使用它。
你的另一个问题是你总是在第一次迭代后返回。你的第二个return
应该在外面循环,这样它才会在整个循环耗尽时运行。
for word_index in range(len(board)):
if word in board[word_index]:
return True
return False
然而,说到这一点,在Python中你几乎不应该遍历范围(len(某事物))。总是遍历事物本身:
for word_list in board:
if word in word_list:
return True
return False
答案 1 :(得分:0)
你正在列表中寻找一个字符串,python不会在列表中递归,即使它确实存在,你仍然找不到它,因为你有一个字符列表而不是字符串:
def board_contains_word(board, word):
for element in board: # First Iterate each list in the board.
if word in ''.join(element): # Then join the list of characters to make a word and look for your desired word in it
return True
return False