@jodijam

Не могу понять логику операторов or и and в цикле?

Здравствуйте. Помогите пожалуйста разобраться с логическими операторами. Как я считаю, цикл завершится только когда и X и Y будут равны единице. Но на практике выход происходит когда хотя бы один из них равен единице. Если я использую оператор or, то выход происходит только при истинности обоих условий. Не могу понять почему. Как я понимаю логический оператор and дает истину только если оба утверждения истинны. Логический оператор or дает истину если хотя бы одно из утверждений истинно.
x = 3
y = 7
while x!=1 and y!=1:
    x = int(input('x = '))
    y = int(input('y = '))

Прошу прощения, если я сильно туплю.
  • Вопрос задан
  • 151 просмотр
Решения вопроса 4
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Странно вы считаете. Логический оператор AND имеет такое же значение, как и союз И. Попробую разъяснить на детских аналогиях. Предположим, что у нас по 3 три яблока. Пока у меня не одно яблоко и у вас не одно яблоко мы оба должны есть яблоки. Если один из нас съел два яблока, а другой нет, должны ли мы продолжать есть яблоки?
Ответ написан
Комментировать
GavriKos
@GavriKos
Не надо думать когда завершится цикл. Надо думать когда он продолжится.

А продолжится он когда выполняются ОБА условия. Соответственно если хоть одно не выполнится (не оба, а одно) - то тогда будет выход.
Ответ написан
LaRN
@LaRN
Senior Developer
Попробуйте ваше условие переписать так, как вы его словами написали:

not(x==1 and y==1)

Т.е. цикл завершится, когда ваше условие будет истинно. А условие ваше это x=1 и y=1.
Ответ написан
Комментировать
@kova1ev
Подозреваю, что непонимание возникло из-за того что вам нужно получить не true, а false, чтобы выйти из цикла.
Все же просто: x равен единице => x!=1 дает false => если у and любой операнд это false, то вернется false => цикл завершается.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы