Python新手求助:列表遍历判断循环为何始终返回True
问题原因
你的代码逻辑写反了:
- 现有逻辑是遍历索引1到9的元素时,只要碰到任意一个值为
X或O的元素,就立刻执行return True终止函数,不会继续检查剩下的元素。只要列表里存在至少一个X/O,返回结果就永远是True,和其他位置的元素值无关,这就是你改了元素结果也不变的原因。 - 从函数名
full_board_check和你用的棋盘格式来看,你实际要实现的逻辑应该是:检查1-9位的所有棋盘格都被X/O填满(没有空位、没有其他字符),满足条件返回True,只要有一个位置不符合就返回False。
修正方案
把判断条件反过来:遍历过程中只要发现任意位置的元素不是X/O,立刻返回False;等所有元素都遍历完成、确认没有不符合要求的值之后,再返回True。
修正后的代码如下:
test_board = ['#', 'X', 'L', 'X', 'O', 'X', 'O', 'X', 'O', 'X'] def full_board_check(board): for i in range(1,10): if board[i] not in ["X","O"]: return False return True
用你现在的测试列表运行,因为索引2位置是L,函数会返回False;把L替换成X或O之后,所有检查位都是合规值,函数才会返回True,符合预期。
内容的提问来源于stack exchange,提问作者shivam tuli
相关产品推荐
相关产品推荐

