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

时间:2015-01-05 04:21:17

标签: python jython

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

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

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

谢谢!

2 个答案:

答案 0 :(得分:2)

您需要使用

random.shuffle(split)

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

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

import random

from random import shuffle

然后你的程序将按原样运行。

您的计划的另一个潜在问题 - 至少在您显示的代码中,您尚未为变量sentence分配值,因此当您致电print scramble(sentence)时您将收到错误,因为scramble()没有输入。

作为一点建议,我不会在内置函数之后命名变量,因为这会使事情变得紧张。也许称之为shuffled或其他......

答案 1 :(得分:1)

你的问题就在这一行:

shuffle(split)

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

random.shuffle(split)

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

from random import shuffle

然后您不需要调整shuffle(split)