2016-02-28 3 views
-4

Я просто не знаю, с чего начать. Мне задан вопрос ниже, и я действительно застрял. Я был бы очень благодарен за любую помощь. Моя попытка кодирования показана ниже. Благодарю.Python Search Search Solver

«Написать функцию, которая принимает двумерный список символов и строку (слово) в качестве входных аргументов. Эта функция выполняет поиск строк в списке 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]

+1

Вы сказали, что ваша попытка была ниже. Все, что я вижу, - это код, который необходимо настроить для начала реализации. Кроме того, вы вызываете функцию, называемую функцией, которую вы не показывали. Есть ли еще код, который вы можете показать? – idjaw

+0

Вам нужно показать, что вы пробовали, и какие ошибки или ошибки вы получаете. Мы не собираемся делать домашнее задание для вас. – themantalope

+0

Кроме того, вы использовали 'characters' в качестве вашего имени матрицы, но пытались вызвать' function (crosswords, word) '. –

ответ

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 

символов = [[ 'с', 'd', 'о', 'г'], [ 'с', 'и', 'с', 'т'], [ 'а' , 'c', 'a', 't'], ['t', 'e', ​​'t', 'k']] word = 'cat' print (функция (символы, слово))

Это вернет TRUE, если слово найдено в массиве и FALSE, если нет. Вам нужно будет заменить «return True» и «return False» на то, что вам нужно вернуть.

EDIT: Я разработал решение, оно выполняет свою работу; хотя это может быть не лучший способ сделать это. Вероятно, есть возможности для улучшения.

0

Защиту 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 

кроссворды = [[ 'с', 'd', 'о', 'г'], [ 'с', 'и',» c ',' m '], [a, c, a, t, print (find_word_horizontal (кроссворды, слово))

+0

Вы должны добавить ** каждую ** строку вашего кода с 4 пробелами, чтобы указать блок кода для целей форматирования – shrmn

0

Привет, как бы это отличалось от поиска слова по вертикали, а не по горизонтали? - Функция ищет строки в списке 2d, чтобы найти соответствие для слова.

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 
+0

, пожалуйста, объясните свою проблему и пометьте язык программирования, в котором над кодом @sereno – Pritamkumar