Python 我需要停止for循环,但break赢了';行不通

Python 我需要停止for循环,但break赢了';行不通,python,position,Python,Position,我写了一些代码,可以找到用户在句子中输入的单词的位置。但在他们输入单词后,我需要代码来找到位置并打印出来,然后停在那里。但它并没有停止,而是继续到else语句,如果他们输入一个不在句子中的单词,就会发生这种情况。如果我使用break,它只打印单词在句子中出现多次的第一个位置。我该怎么办 sentence = "ask not what your country can do for you ask what you can do for your country" print(sentence)

我写了一些代码,可以找到用户在句子中输入的单词的位置。但在他们输入单词后,我需要代码来找到位置并打印出来,然后停在那里。但它并没有停止,而是继续到else语句,如果他们输入一个不在句子中的单词,就会发生这种情况。如果我使用break,它只打印单词在句子中出现多次的第一个位置。我该怎么办

sentence = "ask not what your country can do for you ask what you can do for your country"
print(sentence)
keyword = input("Input a keyword from the sentence: ").lower()
words = sentence.split(' ')

for i, word in enumerate(words):
    if keyword == word:
        print("The position of %s in the sentence is %s" % (keyword,i+1))


if keyword != word:
    keyword2 = input("That was an invalid input. Please enter a word that is in the sentence: ").lower()
    words = sentence.split(' ')
    for i, word in enumerate(words):
        if keyword2 == word:
             print("The position of %s is %s" % (keyword2,i+1))

您可以首先获取所有索引,然后仅在没有匹配索引的情况下执行第二个函数

indexes = [i for i, word in enumerate(words) if word == keyword]
if indexes:
    for i in indexes:
        print('The position is {}'.format(i))

if not indexes:
    ...
您还可以使用
while
循环,这样您就可以只使用一个步骤

keyword = input("Please enter a word that is in the sentence: ").lower()
indexes = [i for i, word in enumerate(words) if word == keyword]
while not indexes:
    keyword = input("That was an invalid input. Please enter a word that is in the sentence: ").lower()
    indexes = [i for i, word in enumerate(words) if word == keyword]

for i in indexes:
    print('The position is {}'.format(i))

如果单词出现不止一次,是否要显示单词的每个位置?在满足条件时使用
break
命令。您可能只想将其包装在函数中,找到后返回值。然后在调用函数时只打印返回值。这样,您还可以在其他实例中重用它,而无需重新编码。:)谢谢你的帮助。我有一个关于while循环示例的问题,我想了解它实际上是如何解决我的问题的,比如它如何打印两个位置,然后在打印错误消息之前停止打印。列表理解的目的是什么?唯一的错误条件是提供的关键字不在单词列表中。列表理解为提供的关键字获取句子中所有匹配索引的列表。如果列表理解生成的列表为空,则关键字与任何单词都不匹配,您需要重新提示用户输入另一个关键字。一旦关键字与至少一个索引匹配,
索引
将计算为
,并使其在循环中中断。然后它会打印所有匹配的索引。非常感谢你,伙计,你是个救命恩人!xx