所以我试图制作一个比较脚本,如果有匹配的字符串,我基本上会制作,然后打印出来,否则只打印出它不包含的字符串。
我现在的问题是,每当它包含字符串时,它只打印一次,这很好,但每当它找不到匹配的字符串时,就会打印出很多不匹配的字符串。
etc:
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循环,它经过的每一个循环都赋予了一个新的意义,我在那里进行了比较。
我的问题是,我该如何使其达到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
在这种情况下,您希望将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
子句将打印失败消息。