Хотя цикл и логические операторы в Python - как это работает? - PullRequest
0 голосов
/ 02 июля 2019

Почему при вводе кода:

A = 0
B = 0

while A<10 or B<5:
    A+=1
    B+=1
    print(A)
    print(B)

цикл не останавливается, когда B = 5; вместо этого он продолжает прибавлять 1 к A и B до A = 10, затем останавливается. То же самое происходит, когда я меняю заказ, например:

while B<5 or A<10:

Когда я заменил 'или' на 'и', код останавливается, когда B = 5, именно так, как я хотел. Я просто не понимаю, как на самом деле работает «или» и «и».

Ответы [ 2 ]

2 голосов
/ 02 июля 2019

Это похоже на английский:

  • or дает True, когда любое условий с обеих сторон True.

  • and дает True, когда все условий с обеих сторон равны True.

0 голосов
/ 02 июля 2019

A <10 и B <<code>5 означает, что цикл продолжается, пока A меньше 10 И B меньше 5 (проверка обоих условий ) или другими словами, он остановится, только если A имеет значение, большее или равное 10 ИЛИ B, имеет значение, которое больше или равно 5 ( любой из двух).

Что касается A <10 или B <<code>5, цикл будет продолжаться, если A имеет значение меньше 10 ИЛИ B имеет значение, которое менее чем 5 (любой из двух). То есть, если A = 10 и B = 2, цикл все равно продолжится, поскольку B все еще удовлетворяет условию. Цикл завершится, только если A имеет значение, которое больше или равно 10 И B имеет значение, которое больше или равно 5 (оба значения должны быть истинными ).

...