我有一个可以掷6面骰子的模拟器:
def diceRoll6():
return random.randint(1,6)
现在我想用一个for循环来重复这个掷骰,但也要能够改变我在函数中使用的模拟器,例如,也许我有另一个函数,掷2个骰子,然后取产品
def frequencies(sim,n):
output = []
for i in range(n):
result = sim
output.append(result)
return output
然而,每当我运行frequencies(diceRoll6(),10)
时,它只会有10次相同的输出,而不是分别运行模拟器10次并获得不同的输出
将一个函数作为变量传递给另一个函数很好,您在这里做得很正确。当您调用
frequencies(diceRoll6,10)
,sim=diceRoll6
。但是,在循环中设置result=sim
,然后追加result
,这意味着您要在调用diceRoll6
并追加结果时追加函数diceRoll6
10次尝试:
您也不会在for循环中执行sim功能。所以你实际上是把函数的结果传递给频率,而不是函数本身
所以你的意思是执行骰子滚动函数,得到它的结果并将其传递给频率。相反,您需要在不使用
()
的情况下将func传递给它,以便传递对func的引用而不是其结果所以频率只是从掷骰子和n次中接收int值。所以它会将int n次附加到列表中
您需要将掷骰子功能而不是其结果传递给频率,并让频率功能为您执行n次
你也可以简单地将你的频率函数设置为
相关问题 更多 >
编程相关推荐