我不明白这段教程代码?

时间:2015-10-03 05:20:08

标签: python python-3.x

我目前正在从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并且是无限循环。

任何帮助都非常受欢迎,因为我到处寻找答案而且没有结果。提前谢谢。

2 个答案:

答案 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)