选择一个随机变量然后让它在Python中再次被选中?

时间:2013-03-11 01:05:50

标签: python

我正在为化学项目制作一个小游戏,其中控制台打印一个随机选择的问题,其中20个存储在变量中,用户回答问题,然后该问题变得无法再次随机选择。我如何去做随机选择变量的部分,然后不再允许它被选中?

4 个答案:

答案 0 :(得分:8)

如果您有一个名为lst的问题列表,则可以执行以下操作:

import random
random.shuffle(lst)

这会将列表随机排序。然后每次你想要一个问题,你从列表中删除最后一个元素:

question = lst.pop()

答案 1 :(得分:5)

尝试这样的事情:

import random

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

for question in your_questions:
    print question

答案 2 :(得分:1)

听起来您正在寻找无需更换的随机样本。你可以

import random

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

其中L是您的问题列表,20是要返回的随机(无替换)列表的长度。所以在这里,您的列表L将是一个包含20个字符串的列表,代表您的问题。

注意:这会返回一个随机列表。

答案 3 :(得分:0)

虽然@David Robinson的答案是最好的,但您也可以这样做:

随机导入 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]