生成范围内的随机数,不重复
Generate random numbers in range without repetition
我正在创建一个问答游戏,需要随机调用 10 个问题(函数)。我可以简单地生成一个随机整数 1-10 并使用 if
语句调用每个函数,但我需要确保没有问题被多次调用,因此我需要生成随机数而不重复。
def Trivia_Snap():
question_1()
question_2()
question_3()
question_4()
question_5()
question_6()
question_7()
question_8()
question_9()
question_10()
>>> import random
创建一个数字列表
>>> l = range(0,11)
>>> l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
...然后用 random.shuffle()
将它们洗牌
>>> random.shuffle(l)
>>> l
[5, 7, 4, 2, 1, 8, 6, 10, 9, 0, 3]
>>> random.shuffle(l)
>>> l
[1, 5, 9, 4, 10, 6, 2, 7, 0, 3, 8]
您可以将对函数的调用放在一个列表中
l = [question_1, question_2...]
然后 select 从该列表中随机选择,无需替换
import random
rand_l = random.sample(l, len(l))
for f in rand_l:
f()
编辑: 根据下面的评论,您也可以使用 shuffle
random.shuffle(l)
for f in l:
f()
import random
qlist = [i for i in range(0,10)]
random.shuffle(qlist)
for q in qlist:
print q
假设您有一个问题列表:
questions = ['Q: foo?', 'Q: bar?', Q: 'baz?']
使用以下功能,您可以将所有这些问题呈现给用户来回答。每次调用该函数时,问题都会以不同的顺序显示。它将 return 一个元组列表,其中每个元组代表从原始问题列表中枚举的已回答问题的编号,以及问题的答案:
from random import shuffle
def trivia_snap(questions):
q = list(enumerate(questions))
shuffle(q)
answers = []
for question in q:
answers.append((question[0], input(question[1] + " Answer: ")))
return sorted(answers)
>>> trivia_snap(questions)
>>> Q: foo? Answer: "Homer"
>>> Q: baz? Answer: "Marge"
>>> Q: bar? Answer: "Lisa"
>>> [(0, "Homer"), (1, "Lisa"), (2, "Marge"), ]
希望对您有所帮助!
我正在创建一个问答游戏,需要随机调用 10 个问题(函数)。我可以简单地生成一个随机整数 1-10 并使用 if
语句调用每个函数,但我需要确保没有问题被多次调用,因此我需要生成随机数而不重复。
def Trivia_Snap():
question_1()
question_2()
question_3()
question_4()
question_5()
question_6()
question_7()
question_8()
question_9()
question_10()
>>> import random
创建一个数字列表
>>> l = range(0,11)
>>> l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
...然后用 random.shuffle()
>>> random.shuffle(l)
>>> l
[5, 7, 4, 2, 1, 8, 6, 10, 9, 0, 3]
>>> random.shuffle(l)
>>> l
[1, 5, 9, 4, 10, 6, 2, 7, 0, 3, 8]
您可以将对函数的调用放在一个列表中
l = [question_1, question_2...]
然后 select 从该列表中随机选择,无需替换
import random
rand_l = random.sample(l, len(l))
for f in rand_l:
f()
编辑: 根据下面的评论,您也可以使用 shuffle
random.shuffle(l)
for f in l:
f()
import random
qlist = [i for i in range(0,10)]
random.shuffle(qlist)
for q in qlist:
print q
假设您有一个问题列表:
questions = ['Q: foo?', 'Q: bar?', Q: 'baz?']
使用以下功能,您可以将所有这些问题呈现给用户来回答。每次调用该函数时,问题都会以不同的顺序显示。它将 return 一个元组列表,其中每个元组代表从原始问题列表中枚举的已回答问题的编号,以及问题的答案:
from random import shuffle
def trivia_snap(questions):
q = list(enumerate(questions))
shuffle(q)
answers = []
for question in q:
answers.append((question[0], input(question[1] + " Answer: ")))
return sorted(answers)
>>> trivia_snap(questions)
>>> Q: foo? Answer: "Homer"
>>> Q: baz? Answer: "Marge"
>>> Q: bar? Answer: "Lisa"
>>> [(0, "Homer"), (1, "Lisa"), (2, "Marge"), ]
希望对您有所帮助!