Условия неправильно работают python
a = int(input())
b = int(input())
c = int(input())
d = int(input())
if a == c or a == c + 1 or a == c - 1 and b == d or b == d + 1 or b == d - 1:
print("YES")
else:
print("NO")
Пытаюсь решить задачку на ход ладьи, вводится 4 значения и нужно узнать может ли так сходить ладья. Описал все шаги ладьи но при вводе 4322 выводится yes. Почему не срабатывает условие?
Ответы (2 шт):
Условия работают правильно. При вводе 4322 выполняется b = d+1 (3=2+1). Поэтому выводится "yes".
Все дело в приоритете операций.
Для того, чтобы понять как интерпретируется данная конструкция предлагаю ее упростить, заменив каждое сравнение результатом - False / True.
Получиться:
False or False or False and False or True or False
данная конструкция интерпретируется слева направо и первые четыре предиката:
False or False or False and False
можно упростить до единственного False - получится:
False or True or False
результатом будет True
NOTE: на будущее - если в строке сравнения присутствуют оба предиката or и and , то задавайте приоритет явно при помощи скобок:
print((False or False or False) and (False or True or False))
# False