[英]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”循环。
希望这有助于并享受编程!
为了广泛地回答您的问题,在每次迭代之前检查for
和while
循环条件。 例如,
while false:
print("False")
永远不会到达第二行,因为在第一次迭代之前条件不满足。
但是只要满足条件,循环内的所有代码都会执行。 loop
不会增量检查其条件 - 它仅在尝试新迭代之前执行此检查。 考虑这个例子:
foo = true
while foo == true:
foo = false
print(foo)
到达print
语句是因为foo
在循环开始时为真。 自然,这只会打印一次。 只有当循环尝试重复时,循环才会因为条件不满足而退出——除非你告诉它,否则它不会提前退出。
可以问问题,不用担心,
首先你必须了解循环概念
在您的情况下嵌套循环,如果您研究父类和子类,您会更好地理解它,那么它肯定会响起,它为我响起:)
在while循环中,它首先测试条件,然后只有循环开始。这是主要逻辑。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.