它将棋盘引用到一个有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
发布于 2012-11-29 01:34:10
因为or 'X'
的计算结果始终为True
,所以while
语句始终返回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
https://stackoverflow.com/questions/13617413
复制