2010-12-13 100 views
2

我将如何选择一行,然后选取该行上的所有单词,然后使用一组打印到屏幕上。这是我到目前为止有:在Python中单行选择一个随机单词?

import random 

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

回答

3

我认为这确实你问什么:

print random.choice(test[0].split('\n')) 
line 5 

我有一种感觉,你希望做的比这多一点,虽然。

+0

使用'.splitlines()'? – 2010-12-13 05:59:48

+2

为什么'测试[0]'?这会给你'test'的第一个字符。 – 2010-12-13 07:25:42

+0

复制和粘贴他的代码我得到以下输出下面我的代码: 在[7]:打印random.choice(试验[0] .split( '\ n')) 线3 在[8]:打印random.choice(test [0] .split('\ n')) line 1 Tim,你在说什么? – JBWhitmore 2010-12-14 00:37:22

1

我怀疑你想随机挑选它们而没有更换;如果你要做的就是选择随机的话,喜欢的东西

do until set empty 
    prick a random word and print it 

会(一)未终止,及(b)在每个1/n倍平均重复字N个字。

这将是诱人的使用Python集,但不方便没有明显的方式从集中选择一个随机项,因为它没有排序。 (您可能会提出一个案例,set#pop将起作用,因为它需要任意的下一个项目,但如果我正在评分,我不会给出完整的功劳。)另一方面,描述说明了一个集合。

所以我会这样做:

首先把项目放到一个列表中。请注意,您有什么把一个字符串与10号线到列表中,,这是您的任务列表长度1.我敢打赌,你最好初始化像

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

接下来,选择使用choice为您的项目

word = random.choice(words) 

打印

print 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设置的隐式顺序。

+0

FTFY:Python中没有'println','len()'是一个自由函数。我认为你错误地用Ruby编码? – zwol 2010-12-13 05:35:40

+0

变老不适用于sissies。 – 2010-12-13 05:40:56

+0

为什么不使用random.shuffle? – 2010-12-13 05:45:12