2010-12-13 56 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

相關問題