我这里有一个python程序解读一个单词,但我不确定特定部分发生了什么。
在下面用标题框分区和分隔的部分中,我不明白为什么这个单词的“加扰”被放入while循环中 - 如果没有循环它会不能工作?此外,有人可以解释在while循环中发生的所有事情(而单词:)?
import random
words = ('coffee', 'phone', 'chair', 'alarm')
word = random.choice(words)
correct = word
scramble = ""
while word: position = random.randrange(len(word)) scramble += word[position] word = word[:position] + word[(position + 1):]
print("The scrambled word is: ", scramble)
answer = input("What's your guess?: ")
def unscramble(answer):
while answer != correct and answer != "":
print("Sorry, incorrect.")
answer = input("Try again: ")
if answer == correct:
print("Good job, that is correct!")
unscramble(answer)
答案 0 :(得分:0)
让我们一次看一行while循环。
while word:
这只是说while len(word) > 0
的简写。这意味着循环将继续,直到word
为空。
position = random.randrange(len(word))
此行使用标准库random.randrange
函数来获取0到len(word) - 1
之间的(伪)随机数。
scramble += word[position]
这里,单词中随机位置的字符被添加到加扰字中。
word = word[:position] + word[(position + 1):]
最后,此行使用切片从原始单词中删除随机选择的字符。表达式word[:position]
表示" word
的子字符串,直到(但不包括)索引position
"。因此,如果position
为3,那么word[:position]
将是单词作为字符串的前三个字符。同样,word[(position + 1):]
表示从word
"开始的position + 1
的子字符串。
除了索引word
"中的字符外,整个表达式最终为" position
,因为您要将word
的部分连接起来从position
word
开始position + 1
的{{1}}部分。不幸的是,这是在Python中从字符串中删除字符的最优雅方式。
总结:while循环选择原始单词的随机字符,将其添加到加扰单词,并从原始单词中删除它。它会继续执行此操作,直到原始文件中没有任何字符。