我做了一份简短的调查问卷:
from random import randint
def pancakes():
q = raw_input("Do you like pancakes?")
if q == "yes":
print("Great!")
elif q == "no":
print("Hmmm...")
def french_toast():
q = raw_input("Do you like french toast?")
if q == "yes":
print("Oh!")
elif q == "no":
print("Same here!")
def random():
num = 2
while num > 0:
random = randint(1, 2)
if random == 1:
num = num -1
pancakes()
elif random == 2:
num = num -1
french_toast()
random()
我在这里的目标是让问题随机排列。但有时同一个问题会被问两次,因为它是随机选择的。在
我怎么能让它只问一次同样的问题?在
我建议您将
for
循环与random.sample
结合使用,而不是while
循环。事先创建要提供给sample
的函数列表:这将在每次迭代中随机选择一个函数来遍历所有函数。在
或者,您可以使用
^{pr2}$shuffle
对列表进行random.shuffle
进行shuffle
,然后对其进行迭代,这样也会更快(不过,速度不应该是这里最关心的问题):如果需要,请将它们放入函数中:
打电话给他们:
^{4}$正如一条注释所指出的,不要使用
random
作为函数名,它有可能掩盖模块random
,从而导致奇怪的错误。在你的最后一个问题(
random
不是一个好名字)如何!您可能会覆盖同名的模块[尽管现在这样做很好])把问题放在一个列表中,用^{} 选择一个,从列表中删除并执行它。如果问题列表为空,则停止。这样每个问题都只选一次。在
如果你想增加更多的问题,这很容易扩展。在
再想一想:Jim Fasarakis-Hilliard's answer中的
shuffle
版本要干净得多!在我会使用
random.sample
Link。只需为你的问题创建一个索引列表,并从中抽取2个。在编辑:
此外,您可以使用
random.shuffle
Link:相关问题 更多 >
编程相关推荐