循环在python中的错误位置中断

问题描述 投票:-1回答:2

我用python编写了这段代码。它是大型代码文件的一部分。我在下面的代码后解释了我的问题。

def main():
    maxAttempt = 5
    endLoop = False
    isFailed = False
    words = ['a', 'apple']
    loop = True
    for word in words:
        while loop != False:
            print(word)
            uResult = input(
                f'Enter the word: ').upper()
            if uResult == word.upper():
                print('Congrats!')
                loop = False
                # The loop is breaking here
            else:
                maxAttempt -= 1
                if maxAttempt == 0:
                    isFailed = True
                    break
                print('try again')
        if endLoop:
            break

    if not isFailed:
        print('Congrats! You are safe now.')


if __name__ == "__main__":
    main()

如果forendLoop,我想中断True循环。但是循环在执行if块后就中断了-

if uResult == word.upper():
                print('Congrats!')
                loop = False

问题出在哪里,我该如何解决?希望我能解释我的问题。预先感谢。

python
2个回答
0
投票

loop在第一个单词之后保持False,这就是为什么。您应该在for中初始化它:

for word in words:
    loop = True
    while loop:

0
投票

我不会说循环在您指出的地方中断。在loop = False之后,您可以正确结束while循环并移至words列表中的下一个条目。但是,此时loop仍然为false,因此您永远不会进入while循环,因此看起来循环好像正在中断,而实际上您确实在正确地遍历了单词列表时,只是没有进入for循环。 >

而不是类似:

for word in words:
    loop = True
    while loop:
         <Processing code goes here>

因此,对于for循环,您要确保while循环至少输入一次。

© www.soinside.com 2019 - 2024. All rights reserved.