while循环中的bools是如何影响循环的



我正在学习Python,并构建了一个TicTacToe游戏。我现在正在编写单元测试并改进我的代码。有人建议我在turn函数中做一个while循环,并使用以下bools,但我不知道为什么。我能理解为什么这是有意义的,但由于我是一个新手,我甚至无法解释为什么这对我来说有任何意义。有人能解释为什么这比另一种嘘声组合更有意义吗?

print(TTTGame.player + "'s TURN!")
print('pick a number 1 through 9')
position = int(input()) - 1
valid = False<<<<<<<<<<<<<<<<<<<<<<False
while not valid:<<<<<<<<<<<<<<<<<<<<<<<<<<<Not
try: 
position = int(input('pick a spot'))
except (ValueError):
print('pick a number 1 though 9')
x = TTTGame.board[position]
if x == '-':
TTTGame.board[position] = TTTGame.player
else:
print('Cant Go There!')        
TTTGame.board[position] = TTTGame.player
valid = True<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<True

根据您提供的代码,我将不得不尝试向后工作来创建一个更糟糕的示例,而没有看到您最初所做的事情,这可能会造成更多的混乱。我提到的很多事情对每个开发人员来说都是主观的,但原则往往在某种程度上达成一致(尤其是在python中(。

话虽如此,我将试图解释为什么这种模式是最佳的:

  1. 直观性:当阅读此代码并从外部观察时,我可以看出你正在进行验证,主要是因为我认为,仅仅以普通英语阅读代码,你就假设输入无效(valid==False(,并且在验证(valid==True(之前不会离开循环。即使没有知道这是一个井字游戏的额外背景,我也可以通过阅读代码立即判断出情况确实如此。

  2. 速度:就完成此功能所需的时间而言,它将在输入有效后立即终止,而不是其他需要多个检查的方法。

  3. python:在python社区中,强调"python"代码,这基本上意味着在各种类型的python代码中都有常见的做事方式。在这种情况下,有许多验证输入的模式(使用for循环、终止条件、单独的函数等(,但同样,由于这是如何编写的,我可以调试它,而不必了解整个代码库。这也意味着,如果你在一个大型项目中看到类似的代码块,你更有可能识别出正在发生的事情。它遵循python禅宗的原则,即在保持可读性的同时显式,错误不会悄无声息地传递,并且保持简单。

最新更新