我正在尝试做一个Connect 4 AI,它包含7个嵌套的循环,这些循环共同迭代每一个可能的计数器位置。除了最后一个循环之外,所有循环都做完全相同的事情。循环包含中断,以便迭代可以后退一步。递归的唯一问题是我还没有弄清楚如何让它后退一个循环,所以现在这是不可能的。(我正在寻找一个更快的程序和更少的代码行。)我的问题的基本重现如下:
for loop1 in range(7):
breakChance = random.randint(1,5)
if breakChance > 3:
break
for loop2 in range(7):
breakChance = random.randint(1,5)
if breakChance > 3:
break
for loop3 in range(7):...
我试过把循环的主要部分放在一个函数中,然后发送消息来打破循环,这并没有降低速度,但确实减少了行数,我试过使用递归,但我不能让它做我喜欢做的事情:当我想要的时候,它从来没有中断过,我觉得这是可读性的牺牲,至少对我来说是这样。
2条答案
按热度按时间fgw7neuy1#
如果你想模拟走2d棋盘,你可以通过一对for循环来完成,你也可以 checkout
itertools
在一个循环中完成,当你找到一个有效的逆棋时,你就用它退出这个方法。tsm1rwdh2#
这就是你想要的吗?