功能清单

时间:2018-09-12 11:17:53

标签: python python-3.x list function

我试图列出一个函数列表,从中我可以随机提取其中一个函数。我尝试了几种方法,既试图使其主动选择列表中的第二个函数,又试图使其随机化。都失败了。

如果列表中包含文本而不是函数,则该列表可以正常工作。 尽管我没有调用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)

2 个答案:

答案 0 :(得分:2)

将功能添加到列表中时,只需删除()。所以这行是问题所在:

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()

答案 1 :(得分:0)

首先将您的列表q调整为此:

q = [opt1, opt2, opt3]

否则,您已经在调用函数了。

然后我建议您定义一个索引:

ind = random.randint(0,len(q)-1)

从列表中选择一个随机函数。 现在剩下要做的就是在其后面放置括号:

q[ind]()