Невозможно понять логическое выражение для использования в операторе if… else… Python

#python #if-statement #logic

Вопрос:

Я пытаюсь немного поиграть, и мне нужно использовать некоторую логику для проверки использования позиций на борту, чтобы установить флаг bool validMove. Я ценю, что это не код экспертного уровня, и, безусловно, есть лучший способ сделать это, но это код, который я написал и который я использую. Мне нужно проверить наличие пробела или подчеркивания в определенной точке списка. Когда я проверяю наличие пробела, код работает, когда я проверяю наличие подчеркивания, код работает, но когда я пытаюсь проверить оба условия с помощью оператора или, код завершается ошибкой. Не мог бы эксперт посоветовать, что я делаю не так, пожалуйста. Большое спасибо.

Эта проверка кода на наличие подчеркивания работает…

 while not valid_move:  # check for unoccupied position  if board[x][y] != '_':  valid_move = False  print('Invalid move detected.')  print(board[x][y])  get_user_input()  getCoordinates(position)  else:  print('Valid move...')  valid_move = True  # update board with player position  board[x][y] = player  

Эта же проверка кода на наличие пробела работает…

 while not valid_move:  # check for unoccupied position  if board[x][y] != ' ':  valid_move = False  print('Invalid move detected.')  print(board[x][y])  get_user_input()  getCoordinates(position)  else:  print('Valid move...')  valid_move = True  # update board with player position  board[x][y] = player  

Этот код, использующий проверку оператора on или для обоих, завершается ошибкой…

 while not valid_move:  # check for unoccupied position  if (board[x][y] != ' ') or (board[x][y] != '_'):  valid_move = False  print('Invalid move detected.')  print(board[x][y])  get_user_input()  getCoordinates(position)  else:  print('Valid move...')  valid_move = True  # update board with player position  board[x][y] = player  

Комментарии:

1. Превратить это or в and ?

2. БОЖЕ мой!!!! неужели это действительно так просто, как @MikeScotty …? Я все еще не могу понять, как эта логика работает с И вместо ИЛИ, но, похоже, она работает, большое вам спасибо.

3. Пожалуйста. Вы также можете проверить оператор in / not in . например if (board[x][y] not in ' _') , — поскольку строка также является итерационной. Если бы строка не была повторяемой, вам пришлось бы сделать if (board[x][y] not in (' ', '_'))