Python:当设置为变量

时间:2015-06-02 04:36:44

标签: python variables environment-variables scoping binomial-theorem

我试图重新制作一个名为Dudo的骰子游戏的单人游戏版本。最相关的信息是六个玩家有六个隐藏的骰子,而游戏的目的是猜测桌面上有多少个骰子(例如,如果有十个4,或十二个等等)。

为了制作一些AI,我使用二项式分布,其中计算机猜测存在某种数量的某种骰子的概率,这取决于它手中已有多少种骰子。我把这个等式保存在变量机会中:

chance = ((1/3) ** (i - player_dice_type[turn][active_type])) * ((2/3) ** (total_count - i - player_count[turn] + player_dice_type[turn][active_type]))

i是这种骰子的数量(例如六个5,或七个5,或八个5等)。我列出了玩家拥有的每种骰子的数量(player_dice_type),我可以通过对turnactive_type进行子集来为特定玩家选择特定骰子。 1/3与游戏规则有关(通常它是骰子的1/6),但这无论如何都与我的问题无关。

当我打电话给机会时,它只给我{if player_dice_type[turn][active_type] = 0i = 6的值,所以当计算机有0时,该骰子的6个概率就在桌面上。< / p>

我可以调用iplayer_dice_type[turn][active_type]并看到它们不等于6或0.但事情是,如果我复制并粘贴等式,它的效果非常好。当我打电话时,它只默认为6和0。

我还尝试制作一个返回原始等式的chancefun(i)函数,然后说chance = chancefun(i)。我可以将环境中的i更改为我想要的任何内容,chancefun(i)会做出相应的反应,但变量chance不会再做出反应。

我将范围界定为标记只是因为我认为它可能在某种程度上是相关的,但我无法想到如何。我还尝试将变量名称从chance更改为其他一些内容但仍然没有运气。

2 个答案:

答案 0 :(得分:1)

如果您将<input type="button" style="float:right" value="Go"> </div></form> 定义为变量,则在创建它时它的值已得到修复。它不会更新&#34;如果您以后更改chance或其他任何值。你不能打电话给#34;你已经定义的机会;它只是一个静态值,而不是一个函数。

如果您执行i之类的操作,则设置偶然值,一次,以及它。是不是&#34;链接&#34;不知何故,变量chance = chancefun(i)chance

如果您想为不同的参数获得不同的机会值,请将其设为函数并使用您想要的参数调用它。类似的东西:

chancefunc

我假设def chance(i, turn, active_type): return ((1/3) ** (i - player_dice_type[turn][active_type])) * ((2/3) ** (total_count - i - player_count[turn] + player_dice_type[turn][active_type])) player_dice_type是全局定义的变量。您需要确定您希望total_count全局查找哪些值以及您希望在每次调用时传递哪些值。

答案 1 :(得分:0)

我认为这个问题与chance在一开始就计算一个值并保持该值有关。当一切都启动时,i = 6并且player_dice_type是一个空列表(稍后用另一个函数填充)。之后,我可以输入chance = chancefun(i)一旦我生成了一些数字并更改ichance将显示该确切的值,但再次锁定它。

我可能只是继续使用机会(i)而不使用机会,但我认为将所有内容保存在一个名为chance的变量下非常方便,因为后来我和#39 ; d必须加起来多个概率