Невероятная булева функция Python - PullRequest
1 голос
/ 11 января 2011
>>> a = False
>>> b = False
>>> a | b
True
>>> a
True
>>> b
True

Я получаю это в интерпретаторе Python.

Я просто так не думаю.Есть ли подробный материал о питоне boolean type?

Я использую Python 2.6.6 , спасибо!

Ответы [ 3 ]

7 голосов
/ 11 января 2011

Я вижу только один контекст, в котором ваша проблема имеет смысл:

>>> False = True
>>> a = False
>>> b = False
>>> a | b
True
>>> a
True
>>> b
True
>>> 

Чтобы начать отладку - каков результат print int(False)?Если вышеперечисленное произошло, вы должны получить 1.Попробуйте:

>>> False = bool(0)
>>> a = False
>>> b = False
>>> a | b
False

Насколько это произошло - может быть, кто-то разыграл вас и изменил значение False (см. этот ответ )?Я действительно не могу думать ни о чем другом, что могло бы вызвать это.Вы всегда можете установить False в bool(0) в модулях, где вам это нужно, чтобы защититься от этого.

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

4 голосов
/ 11 января 2011

Что-то не так с вашим переводчиком:

Python 2.7 (r27:82525, Jul  4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> False | False
False
>>> a = False
>>> b = False
>>> a | b
False
2 голосов
/ 11 января 2011

| - это оператор побитовый или в python.

Если вы делаете условную проверку, вы должны использовать оператор or:

>>> a = False
>>> b = False
>>> a or b
False
>>> a
False
>>> b
False

Подробнее о побитовых операторах можно прочитать здесь .

Edit / Side Note: После запуска кода, который вы разместили в своем вопросе, я не получаю те же результаты ... возможно, что-то не так с вашей установкой ...

...