首页 > 解决方案 > 功能列表

问题描述

我正在尝试制作一个函数列表,我可以从中随机提取其中一个函数。我尝试了几种方法,既试图让它主动选择列表中的第二个函数,又试图让它随机。两者都失败了。

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

标签: pythonpython-3.xlistfunction

解决方案


()当您将函数添加到列表时,您只需要删除s 即可。所以这条线是问题所在:

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

推荐阅读