我的while循环中的bool是如何影响循环的?

问题描述 投票:-2回答:1

我正在学习Python,我建立了一个TicTacToe游戏。我现在正在写单元测试和改进我的代码。有人建议我在我的turn函数中做一个while循环,并使用下面的bools,但我不知道为什么。我可以看到一些原因,为什么这是有意义的,但由于我是新手,我甚至无法解释为什么它对我有任何意义。谁能解释一下为什么这比另一个bool组合更有意义?

    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-3.x tic-tac-toe
1个回答
0
投票

根据你提供的代码,我必须尝试向后工作来创建一个更糟糕的例子,在没有看到你最初做的事情的情况下,这可能会引起更多的混乱,而不是帮助。我提到的相当多的东西对每个开发者来说都是主观的,但原则往往在某种程度上是共同认可的(尤其是在python中)。

也就是说,我将尝试解释为什么这种模式是最佳的。

  1. 直观性。当阅读这段代码时,从外部看,我可以知道你在做验证,这主要是因为仅仅阅读这段代码的纯英文,我就看到你在假设输入是无效的(valid == False),并且不会离开循环,直到它被验证(valid == True)。即使没有额外的上下文知道这是一个井字游戏,我也能通过阅读代码立即知道是这样的情况。

  2. 速度:从完成这个函数所需的时间来看,只要输入有效,它就会终止,而不是像其他一些需要不止一次检查的方式。

  3. pythonic:在python社区中,强调 "pythonic "代码,基本上这意味着在各种类型的python代码中都有一些共同的做事方法。在这种情况下,有很多验证输入的模式(使用for循环,终止条件,分离函数等),但同样因为这种写法,我将能够调试它,而不一定要知道你的整个代码库。这也意味着,如果你在一个大型项目中看到类似的代码块,你更有可能认识到发生了什么。它遵循的原则是 禅宗 在你在保持可读性的前提下,你是显性的,错误不会悄然而过,你也保持了简单。

© www.soinside.com 2019 - 2024. All rights reserved.