0

做任务并解决这个问题

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
    '''
 return word in board

但我得到 FALSE

提前致谢

4

2 回答 2

0

这里有一些东西可以让你摆脱困境:

def board_contains_word(board, word):
    # check accross
    for row in board:
        return word in ''.join(row):

    # try with board's rows and columns transposed
    for row in zip(*board):
        return word in ''.join(row):

    return False

print board_contains_word([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], 'ANT')
print board_contains_word([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], 'TO')

提示:您可以通过使用该any()函数来简化事情。

于 2012-11-12T05:47:19.703 回答
0

pythonin运算符的工作方式与您使用它的方式略有不同。这里有些例子:

>>> 'laughter' in 'slaughter'
True
>>> 1 in [1,6,5]
True
>>> 'eta' in ['e','t','a']
False
>>> 'asd' in ['asdf','jkl;']
False
>>> 

如您所见,它有两个主要用途:测试是否可以在另一个字符串中找到一个字符串,以及测试是否可以在数组中找到一个元素。另请注意,这两种用途不能结合使用。

现在,关于解决您的问题。您将需要某种循环for一一遍历所有行。一旦你选择了一行,你需要某种方法将join所有数组元素放在一起。之后,您可以确定这个词是否in是板。

注意:这只解决了横向搜索的问题。不知道这是否是整个任务。zip您可以使用该功能将此方法调整为垂直搜索。

于 2012-11-12T05:27:37.110 回答