如何从包含字母的行和列中获取单词?

时间:2012-11-12 02:07:08

标签: python python-3.x

做一项任务并解决了这个问题

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

提前致谢

2 个答案:

答案 0 :(得分:0)

python in运算符的工作方式与您使用它的方式略有不同。以下是一些例子:

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

正如您所看到的,它有两个主要用途:测试是否可以在另一个字符串中找到字符串,并测试是否可以在数组中找到元素。另请注意,这两种用途无法合并。

现在,关于解决你的问题。你需要某种循环for逐个遍历所有行。一旦你选出了一行,你就需要一些方法将所有数组元素join放在一起。在那之后,你可以弄清楚这个词是in董事会。

注意:这只能解决水平搜索的问题。 Dunno,如果这是整个任务。您可以使用zip函数调整此方法以进行垂直搜索。

答案 1 :(得分: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()函数简化操作。