我目前正在从Michael Dawson的一本书中学习Python。一切都清晰简洁,除非我参加了一个名为“Word Jumble Game”的练习。 这是令我困惑的代码。
import random
# create a sequence of words to choose from
WORDS = ("python", "jumble", "easy", "difficult", "answer", "xylophone")
# pick one word randomly from the sequence
word = random.choice(WORDS)
# create a variable to use later to see if the guess is correct
correct = word
# create a jumbled version of the word
jumble =""
while word:
position = random.randrange(len(word))
jumble += word[position]
word = word[:position] + word[(position + 1):]
我不明白的是,while:word是如何工作的。这是给出的解释:
我以这种方式设置循环,以便它一直持续到word为止 等于空字符串。这是完美的,因为每次循环 执行时,计算机创建一个单字母的新版本 “提取”并将其分配给单词。最终,这个词会变成 空字符串和混蛋将会完成。
我尝试跟踪程序(也许是对我的明显疏忽)但是我看不出“单词”最终是如何突破循环的,因为只要它中有字符肯定会评估为True并且是无限循环。
任何帮助都非常受欢迎,因为我到处寻找答案而且没有结果。提前谢谢。
答案 0 :(得分:5)
这三个陈述是你要理解的内容
jumble += word[position] # adding value of the index `position` to jumble
word[:position] # items from the beginning through position-1
word[(position + 1):] # items position+1 through the rest of the array
因此,在每次迭代之后,只有一个项目从原始字符串word
中删除。 (word[position]
)
所以,最终你会得到一个空的word
字符串。
如果您还不确定,请在每次迭代结束时添加一个print语句。这应该对你有帮助。
while word:
position = random.randrange(len(word))
jumble += word[position]
word = word[:position] + word[(position + 1):]
print word
答案 1 :(得分:0)
while word:
将执行循环块,直到字长为零。
注意:此代码的作用类似于random.shuffle。 from random import shuffle; shuffle(word)