#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 (' ', '_'))