如何在python中执行函数列表?

时间:2014-02-12 05:25:55

标签: python list

我试图将10个函数调用的结果保存到列表中。但是,当我想访问这个数字数据时,我不断收到类型错误,因为列表实际上是一个函数调用列表。我如何让它做的东西,所以我可以有数字做比较?

我尝试将temp变量设置为列表中每个点的结果,但它仍显示为函数。

输出应显示不同骰子的平均值,并返回最佳骰子量

def calculator(fn, num_samples=1000): # this is the function I'm trying to call
    def print_and_return(*args):
            total3 = 0
            for _ in range(num_samples):
                total3 += (fn(*args))
            return float(total3)/num_samples
        return print_and_return

def find_average(dice=six_sided):
    avglist = []
    k, spot = 0, 0
    bob = roll_dice(k+1, dice)
    passed_function = calculator(bob, 1000)

    print(passed_function)
    while k <= 10:
        avglist.append((passed_function)) # <==trying to save the results when I check with 1-10 dice rolls
        if k == 0:
            spot = 1
        else:
            temp = 0
            max = 0
            i = 0
            while i <= len(avglist):
                temp = avglist[i]
                if max > temp:
                    max = temp
                i +=1

            if (avglist[k] > temp):
                spot = k
        print(k, "dice scores", avglist[k], "on average")
        k +=1 
    return spot

2 个答案:

答案 0 :(得分:2)

您不是致电 passed_function。调用没有参数的函数仍然需要()

答案 1 :(得分:2)

您的calculator函数返回一个函数,而不是普通值。因此,您需要致电passed_function以获取结果。

根据您对roll_dice的调用的参数,看起来您希望k参数在循环中变化。正如现在所写,它不会。我怀疑你有点绊倒自己。代码可以编写得更简单,而不需要传递很多函数引用。