0

我有大量需要创建和引用的变量,例如 diceOutCome2、diceOutCome4... diceOutCome12、diceOutComeHornHigh、diceOutComeHornFive 等,我经常需要引用它们,所以我希望将它们存储为全局变量而不是传递它们作为参数。

最重要的是,我也尝试不使用索引号来引用它们,而是使用名称或属性,例如 counter.diceOutCome2 ... 2 这里不是 2 号结果,而是骰子掷出 1 和 1 的结果,四个将存储骰子总数2,2, 1,3 信息等

创建它们的最有效方法和正确语法是什么?

def setGlobalVariables():
    counter=[]
    for i in range (0, 12):
        global counter["count_"+i]=0
4

1 回答 1

3

对于像“diceOutCome2”这样的属性,实际上最好使用带有索引号的列表,比如counter.diceOutCome[2]. 这使您可以轻松地遍历所有 diceOutcomes 列表,或者counter.diceOutCome[n-1]在 n 为 5 时引用第 5 个骰子结果之前的结果。

角注可以计算为对象的方法,可以是您之前引用的计数器对象(counter.highHorn(5)可以评估高角注的输赢counter.diceOutcome[5]),或者用于表示掷骰结果的对象,其中的列表保存在 diceOutCome 中,如counter.diceOutcome[5].highHorn(). 或者HighHorn可以是Bet;的子类 的一个实例HighHorn是使用 DiceOutcome 构造的,HighHorn并将实现一个wins()在 abstract on 中定义的方法,将Bet在子类中实现 - 将其评估为HighHorn(counter.diceOutCome[5]).wins(). 由于 diceOutcomes 都附加到counter,因此这可能是传递给相关方法的逻辑项,或者是定义这些方法的逻辑项。

通常,如果您开始考虑使用尾随数字定义变量名称,例如,将something1在您的程序中使用,您必须立即停止并替换为名为 的列表,并使用列表索引(如.something2something3somethingssomethings[2]

注意- 为了便于交流,我使用基于 1 的索引来对应描述 - 实际上,序列中项目的索引是基于 0 的,因此第 5 项实际上将被引用为sequence[4],它之前的项目是sequence[4-1], the 1st item being found at序列[0]`。关键是,这是索引有意义的情况,而不是变量名上的数字后缀。)

于 2012-09-02T02:41:27.290 回答