[英]Python Word Scramble/Jumble - how does this scramble a word?
我这里有一个python程序,可以对一个单词进行解读,但是我不确定特定部分中发生了什么。
在下面用引号括起来并由标题分隔的部分中,我不明白为什么单词的“加扰”被放入while循环中-没有循环就无法工作吗? 另外,有人可以解释while循环(while word :)内部发生的一切吗?
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)
让我们看一下while循环一次一行。
while word:
这只是while len(word) > 0
一种简写形式。 这意味着循环将继续直到word
为空。
position = random.randrange(len(word))
该行使用标准库random.randrange
函数来获取介于0和len(word) - 1
含len(word) - 1
之间的(伪)随机数。
scramble += word[position]
在此,将单词中随机位置处的字符添加到加扰的单词中。
word = word[:position] + word[(position + 1):]
最后,该行使用切片从原始单词中删除随机选择的字符。 表达式word[:position]
意思是“直到(但不包括)索引position
的word
的子串”。 因此,如果position
为3,则word[:position]
将是word作为字符串的前三个字符。 类似地, word[(position + 1):]
意思是“ word
的子串从索引position + 1
”。
整个表达式最终都是“除索引position
的字符以外的word
”,因为您要将word
的一部分连接position
,而word
的一部分则从position + 1
。 不幸的是,这是从Python中的字符串中删除字符的最优雅的方法。
总结一下:while循环选择原始单词的随机字符,将其添加到加扰的单词中,并将其从原始单词中删除。 它将继续执行此操作,直到原稿中没有剩余字符为止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.