循环多个for循环,Python中骰子的所有可能性

Posted

技术标签:

【中文标题】循环多个for循环,Python中骰子的所有可能性【英文标题】:Looping over multiple foor loops, all posibilities of a dice in Python 【发布时间】:2022-01-21 00:40:19 【问题描述】:

我想打印滚动 n 个骰子时的所有可能选项。 我知道如何做到这一点,当硬编码 n 数量的 for 循环时,但是有没有一种很好的方法可以做到这一点而不为每个骰子硬编码一个循环?最好没有任何外部库。

这是我对 n = 3 的硬编码解决方案,for 循环需要以某种方式对任何 n 数进行通用化:

dices = 3
a = [1]*dices
for a[0] in range(1,7):
    for a[1] in range(1,7):
        for a[2] in range(1,7):
            print(a)

谢谢!

【问题讨论】:

docs.python.org/3.10/library/itertools.html#itertools.product 【参考方案1】:

你也可以递归地解决它。但 itertools.product(由 Thierry Lanthuille 在 cmets 中提出)看起来是更好的选择。

这里是递归方法:

def dices(n, a):
    if n == 0:
        print(a)
        return
    for a[n-1] in range(1,7):
        dices(n-1,a)
        
dicesCount = 3
a = [1]*dicesCount
dices(dicesCount, a)

【讨论】:

以上是关于循环多个for循环,Python中骰子的所有可能性的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中从 For 循环中存储多个矩阵

是否有一种 Pythonic 的方式来跳过 for 循环中的 if 语句以使我的代码运行得更快?

将多个不同的队列压缩到Python中的for循环中?

python循环结构之for循环

如何让 Python 中的 for 循环更高效

如何在 for 循环中创建多个复选框?