在Python中单行选择一个随机单词?

时间:2010-12-13 05:11:16

标签: python printing random

如何选择单行并选择该行上的所有单词,然后使用集合将其打印到屏幕上。这就是我到目前为止所做的:

import random

test = ['''
line 1
line 2
line 3
line 4
line 5
line 6
''']
print (random.choice(test))

2 个答案:

答案 0 :(得分:3)

我认为这完全符合您的要求:

print random.choice(test[0].split('\n'))
line 5
但是,我有一种感觉,你想要做的不仅仅是这样。

答案 1 :(得分:1)

我怀疑你想随意挑选它们而不需要更换;如果您所做的就是随机选择单词,例如

do until set empty
   prick a random word and print it

它会(a)不终止,(b)n个单词平均每1 / n次重复一次。

使用Python集很诱人,但不方便的是没有明显的方法从集合中选择一个随机项,因为它没有被排序。 (你可能会认为set#pop将起作用,因为它需要任意的下一个项目,但是如果我正在评分,我就不会给予全部功劳。)另一方面,描述说明了一个集合。

所以我会做这样的事情:

首先将项目放入列表中。请注意,你有什么把一行10行放入列表中,那就是你的列表长度为1.我敢打赌你最好初始化如

words = [ "test 1","test 2" # and so on
]

接下来,使用choice作为

选择您的项目
word = random.choice(words)

打印

print word

并将其从列表中删除

words.remove(word)

将它放在循环中,直到你的单词用完为止。你会得到类似的东西:

>>> import random
>>> words = ['a', 'b', 'c' ]
>>> while len(words) > 0:
...    word = random.choice(words)
...    print word
...    words.remove(word)
... 
b
a
c

gnibbler指出你也可以

import random
words = [ ... ]
shuf = random.shuffle(words)
for i in shuf: 
   print i

但是这不会将列表视为一个集合;它取决于shuffle设置的隐含顺序。