Как обновить список при использовании для циклов в python - PullRequest
1 голос
/ 23 февраля 2020

Я создаю программу, которая предназначена для решения поиска слов с использованием функций. Вывод, который я получаю из функции 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"), "*", [])

1 Ответ

0 голосов
/ 23 февраля 2020

Я сделал что-то очень похожее за год go.

https://github.com/BenMcLean981/Python-Wordsearch

Я думаю, что проблема в Outpuz.append (строка) просто добавление каждой строки из головоломки в вывод.

Что находится в вашем имени файла? Что найдено и Outpuz должен быть? Найдено, я думаю, это список слов из слов, которые он нашел в загадке. Но тогда что такое outpuz?

Я бы изменил его с этого:

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


Outpuz.append(line)

на это:

if word in line:
    Found.append(word)
    print("Found: ", word)
    Outpuz.append(line.replace(word,ReplaceWith*len(word)))
    #Adds the line if it has the change
else:
    Outpuz.append(line) #Adds the line if it doesnt have the change.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...