为什么有时这个for循环会跳过第二部分?

时间:2020-05-30 09:51:18

标签: python python-3.x

这是我要为井字游戏编写的minimax函数的一部分。具体来说,这是max播放器调用的“ maxi”功能的一部分,该功能调用mini,调用maxi等。程序无法找到最佳的播放方式。当我运行调试器时,有时它会遍历整个for循环,而有时,在第三行调用mini之后,它会无缘无故返回第一行。我错过了一些语法原因吗?

    for i in acts:
        res = result(board, i)
        minboard = mini(res, alpha, beta)
        if utility(minboard) > maxv:
            maxv = utility(minboard)
            x = i
        if maxv > alpha:
            alpha = maxv
        if beta <= alpha:
            break

1 个答案:

答案 0 :(得分:0)

我不完全了解mini和Utility函数的工作方式,但是我的直觉是循环会停止,因为如果您的条件不满足,循环就不会停止。如果不是,则通常的结构是if,否则不是3个if语句。

for i in acts:
    res = result(board, i)
    minboard = mini(res, alpha, beta)
    if utility(minboard) > maxv:
        maxv = utility(minboard)
        x = i
    elif maxv > alpha:
        alpha = maxv
    else:
        break