首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的while循环一遍又一遍地重复

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

Stack Overflow用户
提问于 2012-11-29 09:31:57
回答 1查看 169关注 0票数 3

它将棋盘引用到一个有9个插槽的游戏中,一旦插槽被填满,##while循环就会在没有任何空白点而我不知道如何修复它的情况下继续寻找新的点,请帮助!:(

代码语言:javascript
运行
复制
        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
EN

回答 1

Stack Overflow用户

发布于 2012-11-29 09:34:10

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

相反,您必须包括布尔比较的两个方面:

代码语言:javascript
运行
复制
while board[computer] == 'O' or board[computer] == 'X':

或者更好的是,您可以使用in

代码语言:javascript
运行
复制
while board[computer] in ['O','X']:

或者,在评论中@icktoofay的礼貌,成语:

代码语言:javascript
运行
复制
while board[computer] in 'OX':

您的counter必须在循环外初始化为0,而不是在内部重新初始化。

代码语言:javascript
运行
复制
 # initialize outside the loop
 counter = 0
 while board[computer] == 'O' or 'X':
    # Don't re-initialize to 0 in the loop
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13617413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档