我的while循环重复一遍又一遍

时间:2012-11-29 01:31:57

标签: python while-loop

它正在引用一个有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

1 个答案:

答案 0 :(得分: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必须初始化为<{1}} 循环之外,而不是在内部重新初始化。

0