繁体   English   中英

Python Word Scramble / Jumble-这如何打乱一个单词?

[英]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) - 1len(word) - 1之间的(伪)随机数。

    scramble += word[position]

在此,将单词中随机位置处的字符添加到加扰的单词中。

    word = word[:position] + word[(position + 1):]

最后,该行使用切片从原始单词中删除随机选择的字符。 表达式word[:position]意思是“直到(但不包括)索引positionword的子串”。 因此,如果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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM