我只是不知道从哪里开始。我已经得到了下面的问题,我真的被卡住了。我非常感谢任何帮助。我的编码尝试如下所示。感谢。
“编写一个接受二维字符列表和一个字符串(单词)作为输入参数的函数。该函数搜索2d列表的行以找到该单词的匹配。如果找到匹配,则为函数返回一个列表,其中包含匹配开头的行索引和列索引,否则返回值None(无引号)。
characters=[['s','d','o','g'],['c','u','c','m'],['a','c','a','t'],['t','e','t','k']]
word='cat'
function(crosswords,word)
然后你的函数应该返回[2,1]。
请注意,2d输入列表代表2d填字游戏,水平单词'cat'的起始索引为[2,1]
答案 0 :(得分:1)
有趣的任务......我在Python中处于相当初级的水平,所以如果你还没有解决问题,我可以解决你的一半问题。
def function(crosswords, word):
for row in crosswords:
join_list = "".join(row)
if join_list.find(word) != -1:
return [crosswords.index(row), row.index(word[0])]
else:
return False
字符数= [[' S'' d'' O'' G&#39],[' C& #39;,' U'' C'' M'],[' A'' C' ' A'' T&#39],[' T'' E'' T'&# 39; K']] 字='猫' 打印(功能(字符,单词))
如果在数组中找到该字,则返回TRUE,否则返回FALSE。您需要更换'返回True'并且'返回False'以及你需要返回的东西。
编辑:我制定了一个解决方案,它完成了工作;虽然这可能不是最好的方法。可能还有改进的余地。
答案 1 :(得分:0)
def find_word_horizontal(填字游戏,单词):
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
纵横字谜= [[ 'S', 'd', '0', 'G'],[ 'C', 'U', 'C', 'M'],[ 'A', 'c' 的, 'A', 'T'],[ 'T', 'E', 'T', 'K']] 字=“猫” 打印(find_word_horizontal(纵横字谜,字))
答案 2 :(得分:0)
嗨,如何垂直而不是水平地找到单词呢? - 该函数搜索2d列表的行以查找该单词的匹配项。
答案 3 :(得分:0)
def find_word_horizontal(crosswords,word):
if not crosswords or not word:
return None
number_of_rows=len(crosswords)
for row_index in range (number_of_rows):
temp_str=''
for col_index in range(len(crosswords[0])):
temp_str=temp_str+crosswords[row_index][col_index]
if temp_str.find(word)>=0:
return [row_index,temp_str.find(word)]
return None
答案 4 :(得分:0)
def find_word_horizontal(crosswords,word):
if not crosswords or not word : # if empty then return None
return None
for index,row in enumerate(crosswords):
temp_str=''.join(row)
if temp_str.find(word)>=0:
return [index,temp_str.find(word)]
return None