@Vladimir101

Какая разница в механизме работы and и or в цикле while на примере?

Здравствуйте!
Прохожу обучающий материал по питону (создание игры крестики-нолики)
Столкнулся с отсутствием информации о принципе работы 'and' и 'or' в конкретном случае

def display_board(board): # Нарисовал поле
print (' | |')
print (' ' + board [7] + ' | ' + board [8] + ' | ' + board [9])
print (' | |')
print ('-----------')
print (' | |')
print (' ' + board [4] + ' | ' + board [5] + ' | ' + board [6])
print (' | |')
print ('-----------')
print (' | |')
print (' ' + board [1] + ' | ' + board [2] + ' | ' + board [3])
print (' | |')

test_board=['#','X','O','X','O','X','O','X','O','X'] # Заполнил поле

def space_check(board, position): # Проверка пустая ли клетка
return board[position]==' '

def player_choice(board): # Запрашиваю у игрока какую клетку он выбирает

position=0

while position not in [1,2,3,4,5,6,7,8,9] and not space_check(board,position):
position=int(input('Введите число от 1 до 9 ----> '))
return position

### Не могу понять почему при использовании 'and' если ты попал в диапазон 1-9 (position not in [1,2,3,4,5,6,7,8,9] ) клетка будет заполнена даже если она не пустая (то есть 'not space_check(board,position' игнорируется). Но если вместо 'and' использовать 'or' оба условия будут выполнятся и если ты и попал в диапазон 1-9 но клетка будет не пустая, тебя опять выведет на запрос 'Введите число от 1 до 9 ----> ' .
Прошу, объясните. Перебрал с десяток сайтов но на этот вопрос ответа толком нет.
'
  • Вопрос задан
  • 879 просмотров
Решения вопроса 2
Это основы:

x and y - конечное выражение будет True , только если x = True И y = True.

x and y - конечное выражение будет True ,если x = True ИЛИ y = True ИЛИ x = True и y = True.

Если твоя программа не работает по этим условиям, значит где то нарушена логика.

P.S. оформи код через кнопку > - это поможет другим людям посмотреть код нормально.
Ответ написан
holy_molly
@holy_molly
Начинающий Python программист
"and" это "и", то есть выражение будет истинно, если оба условия будут инстинны
print(1==1 and 2==2)
#True

"or" это "или", то есть выражение будет истинно, если хотя бы одно из условий будет истинно
print(3==3 or 2!=2)
#True
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы