如何选择单行并选择该行上的所有单词,然后使用集合将其打印到屏幕上。这就是我到目前为止所做的:
import random
test = ['''
line 1
line 2
line 3
line 4
line 5
line 6
''']
print (random.choice(test))
答案 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设置的隐含顺序。