做一项任务并解决了这个问题
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
提前致谢
答案 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()
函数简化操作。