繁体   English   中英

关于Python中while循环内for循环的问题

[英]Question about for loops inside while loops in Python

在这个特定的程序中:

from __future__ import print_function 
import random
# Make a list of words
words = ['apple','banana','orange','coconut','strawberry','lime','grapefruit','lemon','kumquat', 
'blueberry','melon']

while True:
    start = input("Press enter/return to start, or enter Q to quit: \n")
    if start.lower() == 'q':
            break
    # Pick a Random Number
    secret_word = random.choice(words)
    bad_guesses = []
    good_guesses = []
    while len(bad_guesses) < 7 and len(good_guesses) != len(list(secret_word)):
    # Draw guesses letters, spaces and strikes
        for letter in secret_word:
            if letter in good_guesses:
                print(letter, end = "")
            else:
                print('_', end = "")
                print('')
                print('Strikes: {}/7'.format(len(bad_guesses)))
                print('')
                # Take guess
                guess = input("Guess a letter: ").lower()
                if len(guess) != 1:
                    print("You can only guess a single letter !")
                    continue
                elif guess in bad_guesses or guess in good_guesses:
                    print("You've already guessed that letter !")
                    continue
                elif not guess.isalpha():
                    print("You can only guess letters !")
                    continue
                if guess in secret_word:
                    good_guesses.append(guess)
                    if len(good_guesses) == len(list(secret_word)):
                        print("YOU WIN !! The word was{}".format(secret_word))
                        break
                else:
                    bad_guesses.append(guess)

    else:
        print("You didn't guess it! My secret word was {}".format(secret_word))

我不完全理解 while 循环中的 for 循环是如何工作的。 我对 Python 和一般编程相当陌生,所以如果我问的问题太基本,我深表歉意。 程序是否仅在遍历 for 循环中的每个字母后才检查 while 循环条件? 或者它在 for 循环的每次迭代之后检查 while 条件(这似乎更有可能,但不太合乎逻辑)。

先感谢您。

它只会为每个 ENTIRE for 循环检查一次 while 循环,而不是每次迭代。

例如,如果您在以下之后调用 count ,

count = 0
while count == 0:
    for i in range(10):
         count += 1

它的值为 10,但 while 循环将退出,因为在 for 循环完成后,count 不再等于 0。

是的,这是一个非常基本的问题,它的答案也很简单。 但不用担心,我们都从某个地方开始,你问它是件好事; 希望我能帮助你理解这一点,这样对你来说也很简单。

外循环总是运行它里面的任何东西,等待循环(无论它是什么类型的循环)完成,然后检查条件(如果有的话)再次运行循环。 这也适用于循环内的循环(嵌套循环)。 以您的示例为例,它将首先检查错误猜测是否小于 7,以及 good__gesses 的长度是否不等于 secret_word 的长度。 如果这返回为有效条件,则将运行内部的“for”循环。

希望这有助于并享受编程!

为了广泛地回答您的问题,在每次迭代之前检查forwhile循环条件。 例如,

while false:
    print("False")

永远不会到达第二行,因为在第一次迭代之前条件不满足。

但是只要满足条件,循环内的所有代码都会执行。 loop不会增量检查其条件 - 它仅在尝试新迭代之前执行此检查。 考虑这个例子:

foo = true
while foo == true:
    foo = false
    print(foo)

到达print语句是因为foo在循环开始时为真。 自然,这只会打印一次。 只有当循环尝试重复时,循环才会因为条件不满足而退出——除非你告诉它,否则它不会提前退出。

可以问问题,不用担心,

首先你必须了解循环概念
在您的情况下嵌套循环,如果您研究父类和子类,您会更好地理解它,那么它肯定会响起,它为我响起:)

  • while 循环 在给定条件为 TRUE 时重复一个语句或一组语句。 它在执行循环体之前测试条件。

在while循环中,它首先测试条件,然后只有循环开始。这是主要逻辑。

  • for loop 多次执行一系列语句,缩写管理body的循环变量的代码。 但是 for 循环开始并检查它必须运行的时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM