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)

WhereL是您的问题列表,并且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 回答