Я создаю программу, которая предназначена для решения поиска слов с использованием функций. Вывод, который я получаю из функции find_horizontal:
['********RRIRAI', 'FUNCTIONRRIRAI', 'RAIOONFRCCPWON', 'PTCSNOBEUITOLO', 'BNCACIANTOSLIH', 'RBYOLILYNREFBT', 'HYYNOGESTIBRIY', 'AATTSIONCMCENP', 'UORTENRRCBFVAU', 'CEBEECVWIERORI', '*********TOPYF', 'PROCESSORTOPYF', 'OH********HSOS', 'OHCOMPUTERHSOS', 'YCYPRESREOSMRW', 'OATHBRMVTHHCTR', 'PGORWOOUIPSCHP']
Проблема в том, что он добавил строку в список Outpuz один раз с вычеркнутым найденным словом, а затем во-вторых перед ним был вычеркнут. Мой желаемый вывод:
['********RRIRAI', 'RAIOONFRCCPWON', 'PTCSNOBEUITOLO', 'BNCACIANTOSLIH', 'RBYOLILYNREFBT', 'HYYNOGESTIBRIY', 'AATTSIONCMCENP', 'UORTENRRCBFVAU', 'CEBEECVWIERORI', '*********TOPYF', 'OH********HSOS', 'YCYPRESREOSMRW', 'OATHBRMVTHHCTR', 'PGORWOOUIPSCHP']
Вот мой полный код:
if __name__ == '__main__':
Puzzle = ["FUNCTIONRRIRAI",
"RAIOONFRCCPWON",
"PTCSNOBEUITOLO",
"BNCACIANTOSLIH",
"RBYOLILYNREFBT",
"HYYNOGESTIBRIY",
"AATTSIONCMCENP",
"UORTENRRCBFVAU",
"CEBEECVWIERORI",
"PROCESSORTOPYF",
"OHCOMPUTERHSOS",
"YCYPRESREOSMRW",
"OATHBRMVTHHCTR",
"PGORWOOUIPSCHP"]
def load_words_to_find(file_name):
word_list = []
file = open(file_name, "r")
for line in file.readlines():
word_list.append(line)
word_list = list(map(lambda s: s.strip(), word_list))
return word_list
def find_horizontal(Puzzle, Words, ReplaceWith, Found):
# Parameters :- List:Puzzle, List:Words, Character:ReplaceWith, List:Found
# Return :- List:Outpuz, List:Found
# Find all words which are horizontally in place (left to right and right to left), return the puzzle and list of found words
add = True
Outpuz = []
for line in Puzzle:
for word in Words:
if word in line:
Found.append(word)
print("Found: ", word)
Outpuz.append(line.replace(word,ReplaceWith*len(word)))
add = False
if not add:
pass
elif add:
Outpuz.append(line)
Outpuz.append(line)
print(Outpuz)
return Outpuz, Found
find_horizontal(Puzzle, load_words_to_find("words.txt"), "*", [])