Шахматный рыцарь ест рыцаря шахматной задачи. несколько, если утверждение верно, и я не знаю, почему - PullRequest
0 голосов
/ 29 октября 2019

Мой код состоит из 2 координат шахматного рыцаря (x1, y1) для рыцаря1 и (x2, y2) для рыцаря2. Я хочу знать, может ли рыцарь1 съесть рыцаря2 в его следующем ходу.

Я сделал несколько выражений if (я предполагаю, что это не самый эффективный способ, но я все еще новичок) Одно из моих утверждений возвращает trueдля моего второго оператора if.

Мои входные данные идут первыми.

x1 = int(input('Input x value of knight1: \n'))
y1 = int(input('Input y value of knight1: \n'))

x2 = int(input('Input x2 value of knight2: \n'))
y2 = int(input('Input y2 value of knight2: \n'))

Тогда вот мои операторы if. Я установил их для этих координат:

(x1-1, y1 + 2) (x1-1, y1-2)

(x1-2, y1 + 1) (x1-2, y1-1)

(x1 + 1, y1 + 2) (x1 + 1, y1-2)

(x1 + 2, y1 + 1) (x1 +2, y1-1)

if (x1-1 == x2 and y1+2) or (x1-1 == x2 and y1-2):
    print('Yes1')
elif (x1-2 == x2) and (y1+1 or y1-1):
    print('Yes2')
elif (x1+1 == x2) and (y1+2 or y1-2):
    print('Yes3')
elif (x1+2 == x2) and (y1+1 or y1-1):
    print('Yes4')
else:
    print('No')

Например, когда я ввожу (3,3) в качестве позиции моего рыцаря1 .. Если я введу (1,5), он должен вернуть «Нет», но вместо этого он возвращает »Да2 'Я понимаю, что x1-2 на самом деле = x2, но у меня есть оператор' и ', означающий, что следующий компаратор также следует учитывать?

Заранее спасибо.

1 Ответ

0 голосов
/ 29 октября 2019

У вас нет оператора равенства (==) для сравнения координат y, например, y1+1 == y2 or y1-1 == y2 - то, как в данный момент записывается выражение координаты y, всегда оценивается как «true» и, следовательно, соответствует, когда входное значение равно * 1002. *.

...