【发布时间】:2016-03-06 16:11:33
【问题描述】:
编写一个名为 capitalize_word_in_crossword 的函数,它接受一个二维字符列表(如填字游戏)和一个字符串(单词)作为输入参数。此函数搜索 2d 列表的行和列以找到单词的匹配项。如果找到匹配项,此函数将二维列表中的匹配字符大写并返回该列表。如果未找到匹配项,则此函数仅返回原始二维列表,不做任何修改。
示例1:如果函数调用如下:
文字:
crosswords=[['s','d','o','g'],['c','u','c','m'],['a','x','a','t'],['t','e','t','k']]
word='cat'
capitalize_word_in_crossword(crosswords,word)
那么你的函数应该返回:
请注意,上面的列表是一个二维纵横字谜的表示,如下所示。
示例2:如果函数调用如下:
文字:
crosswords=[['s','d','o','g'],['c','u','c','m'],['a','c','a','t'],['t','e','t','k']]
word='cat'
capitalize_word_in_crossword(crosswords,word)
那么你的函数应该返回:
请注意,上面的列表是一个二维纵横字谜的表示,如下所示。
注意:如果同时找到水平匹配和垂直匹配,则仅选择水平匹配。例如,在上述情况下,有一个从 [2,1] 开始的水平匹配,还有一个从 [1,0] 开始的垂直匹配。请注意,在返回的列表中,只有水平匹配中的字符应大写。
我试过这段代码,它只能找到水平词。
def find_word_horizontal(crosswords,word):
list1=[]
row_index = -1
column_index = -1
refind=''
for row in crosswords:
index=''
for column in row:
index= index+column
list1.append(index)
for find_word in list1:
if word in find_word:
row_index = list1.index(find_word)
refind = find_word
column_index = find_word.index(word)
ret = [row_index,column_index]
if row_index!= -1 and column_index != -1:
return ret
不知道下一步该做什么。请帮忙。
【问题讨论】:
-
这是一个很好的编程问题。但为什么是正则表达式标签?您似乎没有在这里使用正则表达式。系统会根据问题中包含的内容建议您使用标签。例如:您的问题与字符、数组、字符串有关。但您有责任决定是否真的要使用这些技术。
-
因为它在建议中,我迫切需要回答。 @noob
-
您可以将测试用例和示例代码发布为文本吗?我很难手动输入值。
-
在图像文件中显示代码没有帮助,因为这意味着每个人都必须自己输入代码才能使用或编辑代码以获得答案。除此之外,图像中的缩进是错误的。
-
单词可以斜着写还是倒序写?