我试图将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
答案 0 :(得分:2)
您不是致电 passed_function
。调用没有参数的函数仍然需要()
。
答案 1 :(得分:2)
您的calculator
函数返回一个函数,而不是普通值。因此,您需要致电passed_function
以获取结果。
根据您对roll_dice
的调用的参数,看起来您希望k
参数在循环中变化。正如现在所写,它不会。我怀疑你有点绊倒自己。代码可以编写得更简单,而不需要传递很多函数引用。