如何创建一个函数来打乱句子中的单词?

How do I create a function to scramble the words of a sentence?

我正在尝试编写一个函数,它可以将一个句子作为输入并以打乱的顺序输出相同的单词列表。到目前为止,我有以下内容:

import random
def scramble(sentence):
  split = sentence.split()
  shuffle(split)
  return ' '.join(split)
print scramble(sentence)

问题是 Jython 正在返回一个错误,而不是我正在寻找的输出。我一直在调整代码几个小时,但没有运气。

谢谢!

你需要使用

random.shuffle(split)

当您从模块导入时,该模块的名称会变成 命名空间 。为了使用它的任何功能,您需要指示 Python 解释器这些功能驻留在某个名称空间中。较大的程序可能有几十个(或更多!)导入语句,而命名空间有助于保持一切清晰,因此您不会用可能具有相同名称的多个函数污染主(全局)命名空间。

当您执行 from module import function 时,名称 function 现在位于全局命名空间中,您可以使用它而无需在前面加上其原始模块名称的前缀。这在大型程序中并不总是一个好主意,因为你可能会忘记事情,但如果你想改变这里

import random

from random import shuffle

那么您的程序将按原样运行。

您的程序的另一个潜在问题 - 至少在您显示的代码中,您没有为变量 sentence 赋值,因此当您调用 print scramble(sentence) 时,您会得到一个错误,因为 scramble() 没有输入。

作为一点建议,我不会以内置函数命名变量,因为那样会把事情搞砸。也许叫它 shuffled 或什么...

您的问题在这一行:

shuffle(split)

它是 random 模块的一部分,因此您需要将行更改为:

random.shuffle(split)

或者,您可以将导入行调整为:

from random import shuffle

那你就不用调整shuffle(split)行了