Python - выводить только один раз, если строка не совпадает со строкой - PullRequest
0 голосов
/ 17 ноября 2018

Поэтому я пытаюсь создать сценарий сравнения, в котором я в основном выполняю, если есть совпадающая строка, затем распечатываю ее, а просто распечатываю, что она не содержит.

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

и т. д .:

for words in stackoverflow:

   word_random = words #random meaning every loop
   #"Hello my name is Python and the World is so amazing What"
   #My name is Python and it is amazing!



    Matching_keyword = ['Hello', 'World', 'What']

    for keyword in Matching_keyword:
         if keyword in word_random:
            print(keyword)

         else:
             print(keyword)

    Output:

    Hello
    World
    What
    Hello
    World
    What
    Hello
    World
    What
    Hello
    World
    What
    Hello
    World
    What
    Hello
    World
    What
    Hello
    World
    What
    Hello
    World
    ....
    ....
    ....

Вывод почтиникогда не заканчивается и намного дольше, чем то, что выводится здесь.Как вы можете видеть, у меня вверху цикл for, через который проходит каждый цикл, он дает новое значение, которое я там после сравнения.

Мой вопрос: как я могу сделать так, чтобы каждый раз, когда он достигал * 1010?* true оно должно выводить ключевое слово только один раз, и то же самое переходит к выражению else ?

Я пытался использовать break, но это убивает цикл Matching_keyword и выводит только Hello, номного раз

for keyword in Matching_keyword:
    if keyword in word_random:
       print("Found matching" + keyword)
       break
    else:
       print("Did not find matching")
       break

1 Ответ

0 голосов
/ 17 ноября 2018

Это тот случай, когда вы хотите использовать else с циклом , а не условным.

for keyword in Matching_keyword:
    if keyword in word_random:
       print("Found matching" + keyword)
       break
else:
    print("Did not find matching")

Предложение else в цикле выполняется только в том случае, еслицикл завершается, потому что вы исчерпали итератор.Если вы выходите с break или с исключением, else не выполняется.Так что здесь, как только вы найдете совпадение, вы используете break, чтобы прекратить проверять другие ключевые слова, и вы также избегаете else.Если вы никогда не найдете совпадения, цикл завершается «естественным образом» (и не производит никакого вывода), а предложение else выводит сообщение об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...