2013-03-11 65 views
1

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

+0

它们是否存储在列表中? – 2013-03-11 01:07:47

回答

8

如果你有叫lst问题清单,你可以简单地做:

import random 
random.shuffle(lst) 

这个洗牌的名单为随机顺序。然后,你想一个问题,每次,你从列表中删除最后一个元素:

question = lst.pop() 
5

尝试这样的:

import random 

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

for question in your_questions: 
    print question 
1

这听起来像你正在寻找无需更换随机抽样。您可以

import random 

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

L是你的问题的列表,并20是随机的(不更换)列表的长度要返回。因此,在这里,您的清单L将是代表您问题的20个字符串的列表。

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

0

虽然@大卫罗宾逊的回答是最好的,你也可以这样做:

进口随机 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] 
相关问题