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