2016-02-25 41 views
0

我有一個我想隨機選擇的25個問題的列表7.問題列表將在IRC客戶端(文本)中。以下是我目前作爲問題的一個例子,以及我從列表中隨機化7的過程。PYTHON隨機化列表中的問題並列舉

我想打

questions=[ 
    'Finish this poem "Roses are red Violets are ..."', 
    'What is your favorite food?','Stones or Beatles?', 
    'favorite pet?', 
    'favorite color?', 
    'favorite food?' 
] 

for q in xrange(3): 
    question = '' 
    while question not in questions: 
     # this is where I'm stuck 

我想是這樣。

  1. 什麼是你最喜歡的食物?
  2. 最喜歡的寵物?
  3. 石頭或甲殼蟲?

最終的結果將是從25

+2

的可能的複製[Python中,生成 'N' 的範圍內是唯一的隨機數(http://stackoverflow.com/questions/22842289/python-generate-n-unique-random-numbers-within-範圍) – AlG

+0

這裏的區別是我從問題列表中隨機地生成7個問題。 –

回答

0

使用random.sample()池7個問題:

import random 

for question in random.sample(questions, 7): 
    answer = input(question) 

你需要有足夠的問題,但是。現在你只有六個問題在列表中,所以random.sample()將無法​​提出七個隨機問題。我假設你的真實名單有25個問題,因爲你說from a pool of 25,所以我只是評論。

+0

查看您的答案。你必須更具體地使用['random.sample'](https://docs.python.org/2/library/random.html#random.sample) –

+0

如果我看到我很樂意解決它有什麼不對,但到目前爲止我沒有看到它有什麼問題。請賜教。 – zondo

+0

使用正是這樣的答案,將提供一個錯誤,因爲'問題'列表沒有足夠的長度來選擇7個項目 –

1

您可以使用shuffle()

from random import shuffle 

shuffle(questions) 

for question in questions[:7]: 
    answer = input(question) 
    # do something with answer 
0

一個好的方法可以使用random.sample

>>> from random import sample 
>>> items = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm'] 
>>> selected = [] 

>>> for item in sample(items, 7): 
... selected.append(item) 
>>> print selected 
['h', 'l', 'j', 'm', 'i', 'e', 'c']