我如何做到这一点,但是骰子数量却是可变的?

时间:2019-11-24 15:52:44

标签: python loops nested-loops

我如何做到这一点,但是骰子数量却可变?这意味着all_dices可以有任意长度。

 for first_dice_number in all_dices[0]:
    for second_dice_number in all_dices[1]:
        for thrird_dice_number in all_dices[2]:
            result = first_dice_number+second_dice_number+thrird_dice_number
            results.append(result)

为澄清起见,all_dices如下:

[[1,2,3,4,5,6],[1,2,3,4,5,6],[1,2,3,4,5,6]]

这很可能是一个菜鸟问题,但我无法弄清楚。

问题是我不想互相放置100个for循环。

3 个答案:

答案 0 :(得分:4)

您需要一组值的(笛卡尔)乘积。

var result= JsonConvert.DeserializeObject<Rootobject>(data);

例如:

Range col1 = ws.UsedRange.Columns[1];
                Range col2 = ws.UsedRange.Columns[2];
                System.Array col1values = (System.Array)col1.Cells.Value;
                System.Array col2values = (System.Array)col2.Cells.Value;
                string[] col1Array = col1values.OfType<object>().Select(o => o.ToString()).ToArray();
                string[] col2Array = col2values.OfType<object>().Select(o => o.ToString()).ToArray();

                textBox2.Text = String.Join(",", col1Array);
                textBox2.AppendText("\n");
                textBox2.Text = String.Join(",", col2Array);

答案 1 :(得分:0)

针对这些事情进行递归,将一个循环放入一个函数中,并不断调用自己直到没有骰子为止

{{1}}

我对python的了解不是很好,但这就是主意

答案 2 :(得分:0)

networkApi.getUserList解决方案可能是Python中最好的解决方案,但是处理骰子的另一种方法是考虑将itertools骰子的可能掷骰数从0计为6的n ^ -1 -1 (但使用“数字” 1到6而不是0到5):

n

例如,def decode(dice_code, num_dice): dice = [] for _ in range(num_dice): dice_code,r = divmod(dice_code,6) dice.append(1+r) return dice decode(0,5),而[1,1,1,1,1]decode(7775,5)。只需循环[6,6,6,6,6],然后根据需要进行解码即可。