Python 带函数的列表
我试图制作一个函数列表,从中可以随机抽取其中一个函数。我尝试了几种方法,既尝试让它主动选择列表中的第二个函数,又尝试使其随机。两者都失败了 如果列表中包含文本而不是函数,则该列表可以正常工作。Python 带函数的列表,python,python-3.x,list,function,Python,Python 3.x,List,Function,我试图制作一个函数列表,从中可以随机抽取其中一个函数。我尝试了几种方法,既尝试让它主动选择列表中的第二个函数,又尝试使其随机。两者都失败了 如果列表中包含文本而不是函数,则该列表可以正常工作。 q=[opt1()、opt2()、opt3()]也会激活该函数,尽管我没有调用它们 如何使它从列表中随机抽取一个函数 import random def opt1(): print("hej1") def opt2(): print("hej2") def opt3(): p
q=[opt1()、opt2()、opt3()]
也会激活该函数,尽管我没有调用它们
如何使它从列表中随机抽取一个函数
import random
def opt1():
print("hej1")
def opt2():
print("hej2")
def opt3():
print("hej3")
q = [opt1(), opt2(), opt3()]
health = "100"
p = "1"
print("you have ", p, " potions")
print("Your health is ", health,)
while True:
a = input("A =")
if a == "add":
health = int(health)
p = int(p) + 1
print("you have ", p, " potions")
print("Your health is ", health,)
a = input("A =")
if a == "fight":
q[1]
#random.choice(q)
首先,将您的列表q调整为:
q = [opt1, opt2, opt3]
否则,您已经在调用这些函数了
然后我建议您定义一个索引:
ind = random.randint(0,len(q)-1)
这将从列表中选择一个随机函数。
现在唯一要做的就是把括号放在后面:
q[ind]()
将函数添加到列表时,只需删除()
。所以这条线就是问题所在:
q = [opt1(), opt2(), opt3()]
通过包含()
,您所做的是调用函数并将函数调用的结果添加到列表中,而不是将函数本身添加到列表中。下面的代码应该大致满足您的需要
import random
def opt1():
print("hej1")
def opt2():
print("hej2")
def opt3():
print("hej3")
q = [opt1, opt2, opt3]
randomFunction = random.choice (q)
randomFunction()
“激活函数,尽管我没有调用它们”–
opt1()
是一个函数调用。只要在函数后面放上括号,就可以调用函数。所以,只需将函数名放在列表中。为什么您认为您不调用它们?将函数名放在列表中,并在选择它们时调用它们。。。并用q[1]()
调用它-如果需要的话,还必须弄清楚如何为函数提供参数