3

它正在将一个棋盘引用到一个有 9 个插槽的游戏,一旦插槽被填满,##while 循环会在没有任何空位并且我不知道如何修复它时继续寻找新位置,请帮助!:(

        computer = random.randint(0, 8)
        if board[computer] != 'X' and board[computer] != 'O':
            print computer
            board[computer] = 'O'
        else:
            while board[computer] == 'O' or 'X':
                counter = 0
                if counter > 15:
                    break
                computer = random.randint(0, 8)
                print computer
                if board[computer] != 'X' and board[computer] != 'O':
                    board[computer] = 'O'
                counter += 1
4

1 回答 1

6

您的while语句总是返回一个真值,因为or 'X'总是计算为True。首先,board[computer] == '0'求值,如果False,则继续到 的右侧or,即字符串X。您在代码的其他地方确实有这种模式是正确的,所以我怀疑这只是一个疏忽。

相反,您必须包括布尔比较的两边:

while board[computer] == 'O' or board[computer] == 'X':

或者更好,你可以使用in

while board[computer] in ['O','X']:

或者,由@icktoofay 在评论中提供,惯用语:

while board[computer] in 'OX':

counter必须在循环0 初始化,而不是在循环内重新初始化。

 # initialize outside the loop
 counter = 0
 while board[computer] == 'O' or 'X':
    # Don't re-initialize to 0 in the loop
于 2012-11-29T01:34:10.387 回答