Как bools в моем while l oop влияют на l oop? - PullRequest
0 голосов
/ 06 мая 2020

Я изучаю Python и создал игру TicTacToe. Сейчас я пишу модульные тесты и улучшаю свой код. Мне посоветовали сделать while l oop в моей функции поворота и использовать следующие bools, но я не знаю почему. Я вижу некоторые причины, почему это имеет смысл, но из-за того, насколько я новичок, я даже не мог объяснить, почему это имеет для меня какой-то смысл. Может ли кто-нибудь объяснить, почему это имеет больше смысла, чем другая комбинация 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

1 Ответ

0 голосов
/ 07 мая 2020

На основе предоставленного вами кода мне пришлось бы попытаться работать в обратном направлении, чтобы создать худший пример, и, не видя того, что вы сделали изначально, это может вызвать больше путаницы, чем помочь. Изрядное количество вещей, о которых я упоминаю, являются субъективными для каждого разработчика, но принципы, как правило, до некоторой степени согласованы между собой (особенно в python).

При этом я постараюсь объяснить, почему это шаблон оптимален:

  1. Интуитивность: при чтении этого кода и взгляде со стороны я могу сказать, что вы выполняете проверку, в первую очередь потому, что вы просто читаете код как простой английский sh Я вижу, вы предполагаете, что ввод недействителен (действителен == False) и не оставит l oop, пока он не будет проверен (действителен == True). Даже без дополнительного контекста знания, что это была игра ti c -ta c -toe, я могу сразу сказать, прочитав код, что это так.

  2. Скорость: в с точки зрения времени, необходимого для выполнения этой функции, она прекратится, как только ввод станет действительным, в отличие от некоторых других способов сделать это, требующих более одной проверки.

  3. Pythoni c: В сообществе python делается упор на код 'pythoni c', в основном это означает, что есть способы делать что-то, что является общим для различных типов кода python. В этом случае существует множество шаблонов проверки ввода (с использованием циклов for, условий завершения, отдельных функций и т. Д. c.), Но, опять же, из-за того, как это написано, я мог бы отлаживать его, не обязательно знать всю вашу кодовую базу . Это также означает, что если вы видите похожий фрагмент кода в большом проекте, вы с большей вероятностью узнаете, что происходит. Он следует принципам zen из python в том, что вы говорите явно, сохраняя при этом удобочитаемость, ошибки не передаются тихо, и вы сохраняете его простоту.

...