python中while循环最简单的替代方法

python中while循环最简单的替代方法,python,loops,search,while-loop,Python,Loops,Search,While Loop,该程序的主要目的是搜索单词并确保它们以正确的顺序出现 我目前正在使用代码 while not corpus[index_F2-1] == corpus[index_B]: index_F2 = corpus.index(corpus[index_F2], index_F2+1) 要搜索某个单词,请检查以确保给定单词出现在其前面,如果该单词没有出现在正确的环境中,请在语料库中查找同一单词的不同实例。此代码的唯一问题是,如果从未满足条件,它将返回一个错误。与其让它返回错误,不如让它退出循

该程序的主要目的是搜索单词并确保它们以正确的顺序出现

我目前正在使用代码

while not corpus[index_F2-1] == corpus[index_B]:
    index_F2 = corpus.index(corpus[index_F2], index_F2+1) 
要搜索某个单词,请检查以确保给定单词出现在其前面,如果该单词没有出现在正确的环境中,请在语料库中查找同一单词的不同实例。此代码的唯一问题是,如果从未满足条件,它将返回一个错误。与其让它返回错误,不如让它退出循环,然后为“F2”分配一个新值以重试。使程序退出循环的明显方法是使用while循环,但我不确定如何使while循环在当前循环有效的情况下不为F2找到新值。简言之,如果脚本按此顺序运行,效果最好

  • 检查电流F2是否工作
  • 如果不起作用,则为F2指定一个新值
  • 再次检查recurse并检查新F2是否可以工作
  • 等等
  • 一个if语句可能是合适的,但具体在哪里以及如何工作,我不确定。此外,重新分配F2的代码已经存在。是的

    index_E2= corpus.index(corpus[index_E2], index_E2+1)
    
    index_F = index_E2+1
    
    index_F2 = corpus.index(corpus[index_F], index_F+1)
    

    未来可能出现的一个问题是,语料库可能会耗尽F2值(由于耗尽E2值),并显示类似的错误,但这是另一个问题

    我想我可能明白你在找什么。听起来好像您想要有多个嵌套循环,在最里面的循环中有一个退出点。在我看来,实现这一点最明显的方法是将循环包含在函数中。由于所有这些
    语料库
    内容都令人困惑,我将使用一个简单的示例:

    words_to_find = ['tree', 'cow', 'lots_of_other_words']
    words_to_search = ['bathtub', 'more_words']
    def find_words(words_to_search, words_to_find):
        for i, fword in enumerate(words_to_find):
            for j, sword in enumerate(words_to_search):
                if fword == sword: 
                    return (fword, i, j)
    
    您可以在这里嵌套任意多个循环--、
    while
    ,无论什么--并且在找到所需内容后,仍然可以轻松地将所有循环都打断

    如果这不能回答你的问题,请告诉我


    编辑:我想如果你想把它全部放在一个while循环中,你可以这样做:

    word_list = ['blah', 'blah2', 'etc']
    word_list2 = ['other', 'words']
    i = 0
    j = 0
    while True:
        if i == len(word_list):
            i = 0
            j += 1
        elif thing_I_want(word_list[i], word_list2[j]):
            do_something()
            break
        else:
            i += 1
    

    很难理解你的意思。你能举一个或多个例子吗?这当然回答了我的问题。实现可能有点麻烦(它很长,我对它还不熟悉),但这比我希望的要简单得多。非常感谢。有一件事我有点困惑。如果我的循环是内循环,而寻找新F2的循环是外循环,如果内循环有效,我如何让它跳过外循环?也就是说,如果我当前拥有的while循环不会返回错误,它应该跳过外部循环。这会涉及一段真实的陈述吗?如果您以前的代码考虑到这一点,我很抱歉,我在将其应用于我的代码时遇到了一点问题。@Michael Rauh,在我的函数示例中,
    return
    语句中断所有嵌套循环,并将控制流返回到调用函数的点。因此,使用我的第一个示例,调用
    find_words(x,y)
    ,它运行直到找到匹配项,然后它立即
    返回到调用
    find_words
    的点,打破(即“跳过”)所有循环。您当然可以使用
    而True:
    作为外部循环,但这与此问题无关。在我的第二个例子中,只有一个循环,
    break
    语句从中中断。现在这就有意义了。我觉得你已经想到了,我就是看不出来。