1

コンソールが変数に保存されている 20 個の質問からランダムに選択された質問を出力し、ユーザーが質問に回答すると、その質問が再びランダムに選択できなくなります。変数をランダムに選択し、再度選択することを許可しない部分をどのように実行しますか?

4

4 に答える 4

8

と呼ばれる質問のリストがある場合は、次のlstように簡単に実行できます。

import random
random.shuffle(lst)

これにより、リストがランダムな順序にシャッフルされます。次に、質問が必要になるたびに、リストから最後の要素を削除します。

question = lst.pop()
于 2013-03-11T01:08:08.283 に答える
5

次のようなことを試してください:

import random

your_questions = ['question %d' % i for i in range(20)]
random.shuffle(your_questions)

for question in your_questions:
    print question
于 2013-03-11T01:09:37.693 に答える
1

置換なしでランダムなサンプルを探しているようです。あなたはできる

import random

print random.SystemRandom().sample(L,20)

は質問Lのリストで、20は返されるランダムな (置換なしの) リストの長さです。したがって、ここでは、リストLは質問を表す 20 個の文字列のリストになります。

注: これはランダムなリストを返します。

于 2013-03-11T01:16:24.530 に答える
0

@David Robinsonの答えが最高ですが、次のようなこともできます:

import random lst = [...] # 質問を含む

質問が必要なときはいつでも:

choiceIndex = random.randint(0, len(lst)-1) # you want to do -1 since randint
choice = lst[choiceIndex]                   # is inclusive and indices start at 0
del lst[choiceIndex]
于 2013-03-11T01:41:01.910 に答える