2014-09-25 5 views
0

Исходя из фона Java в Python и работающих свой путь через CodingBat (Python>Разминка-1>pos_neg) следующий смущал меня сильно:питона XOR для двух целых чисел

>>> True^False 
    True 
    >>> 1<0^-1<0 
    False 

I оценить следующее:

>>> (1<0)^(-1<0) 
    True 

Но что питон интерпретации 1<0^-1<0 как вернуть ложь?

+1

Поскольку он оценивает '1 <0^-1 <0' как' 1 <(0^-1) <0', что составляет '1 <-1 <0', что является' (1 <-1) и (-1 <0) ', что, очевидно,« ложно ». Изучите приоритет своего оператора! – jonrsharpe

ответ

4

^ имеет higher precedence по сравнению с <.

Таким образом, то, что оценивается на самом деле 1 < -1 < 0, где 0^-1 = -1

И, таким образом, вы правильно получить False, так как неравенство явно не дотягивает.

Вам почти не нужно запоминать таблицу приоритетов. Просто аккуратно используйте скобки.

Возможно, вы захотите также проверить this, в котором обсуждается идентичная ситуация.

1

0^-1 соответствует -1. 1 < -1 < 0 - False, поскольку 1 больше -1. Естественно, что операторы связывания цепочек Python, следовательно, 1 < -1 < 0 эквивалентны (1 < -1) and (-1 < 0).

Смежные вопросы