Найти - Пользователи
Полная версия: "А не индийский ли код я написал?" или "Как быстрее/короче и т.д."
Начало » Python для новичков » "А не индийский ли код я написал?" или "Как быстрее/короче и т.д."
1 2 3 4 5
doza_and
Все равно не понятно чему вы удивляетесь
В соответствии с приоритетами 0==0 это True
1 and True
>>> True
1 or True
>>> 1

or в арифметических операциях вычисляет только первый аргумент если он эквивалентен True
and вынужден вычислить все и возвращает последний.

Я не могу взять в толк что непонятного?
elisk
bot1net
doza_and так утверждение верно, но он пишет ложь… Статью на википедии пересмотрел, возвращаемый результат неверный.
Когнитивный диссонанс у меня, однако.
>>> 1 and 0 == 0
True
>>> 1 or 0 == 0
1

Все правильно…..приоритет == выше чем у and и or
1 and 0 == 0
Сначала вычисляется 0 == 0 - это True (1)
1 and 1 - True (1)

1 or 0 == 0
Сначала вычисляется 0 == 0 - это True (1)
1 or 1 - True (1)

Операторы or и and всегда возвращают один из своих операндов. Причем второй операнд операторов or и and вычисляется, только если это необходимо для получения результата.
not x
Если x ложно, то 1, иначе 0.
x and y
Если x ложно, то x, иначе y.
x or y
Если x ложно, то y, иначе x.
bot1net
and вынужден вычислить все и возвращает последний.
То есть он вычисляет истинность/ложность каждого аргумента, но вернет последний. Спасибо огромное, теперь понятно Просто я думал, что он должен вычислить истинность/ложность всего выражения… И черт возьми, про приоритет операций не помню, либо не писали, либо пропустил…
bot1net
А как быть со скобками? Выходит на приоритет они не влияют?
>>> (1 and 2 and 3) == 3
True
FishHook
bot1net
А как быть со скобками? Выходит на приоритет они не влияют?
Кокда интерпретируются логические операции, питон приводит целочисленные значения к булевым.
В булевом представлении 0==false, 1,2,3,4…infinity == true.
(1 and 2 and 3) == 3
Тут все логично
1=true, 2=true, 3 = true, (1 and 2 and 3 ) = (true and true and true) = true, (true==3)=true
bot1net
FishHook, примем каждое целое число, не равное нулю как однозначно соответствующему булеву true, а нуль - булеву false, тогда всякая конъюнкция будет истинной, если в ней отсутствует нуль. Мое утверждение правильно интерпретирует то, что вы имели ввиду?
alexbadaloff
bot1net
Если хотите раз и навсегда понять суть данных понятий, обратитесь к главе 9 книги Лутца “Изучаем Python. Четвертое издание” (2011 год), а именно к части “Смысл понятий «истина» и «ложь» в языке Python” (стр. 308). Всё описано очень доступно в одну страницу. Думаю, после прочтения данной страницы ваши вопросы про true/false будут неактуальны.
doza_and
FishHook
Когда интерпретируются логические операции, питон приводит целочисленные значения к булевым.
Боюсь вы не правы, по крайней мере python 2.7.3 дает не булевы результаты.
>>> (1 and 2 and 3) == 3
True
>>> (1 and 3 and 2) == 3
False
>>> 128.35 and [-38, 25.125]
[-38, 25.125]
bot1net
doza_and, вот, собственно, от чего у меня и произошел когнитивный диссонанс…
alexbadaloff, спасибо за рекомендацию, обязательно прочитаю

bot1net
Язык программирования Python. Сузи Роман Авриевич, на с. 16 - 17. Написано про старшенство операций и т.д.
Вероятно, но не факт, что питон версии 2.7.3 имеет некоторые особенности для литералов, связанных логическими операндами. Насколько, по вашему мнению, правомерно связывать ими элементы, не входящие во множество, над которым установлена булева алгебра? Ведь, по определению Булевой алгеброй называется непустое множество A с двумя бинарными операциями AND (аналог конъюнкции), OR (аналог дизъюнкции), унарной операцией NOT(аналог отрицания) и двумя выделенными элементами: 0 (или Ложь) и 1 (или Истина). Мне кажется, что можно совершать операции булевой алгебры исключительно над множеством элементов, над которым установлена эта алгебра. Можно сказать, что булева алгебра это кольцо, состоящее только из 0 и 1, соответственно, логические операции с элементами, не входящими в данное кольцо - бессмысленны.

>>> True and True
True
>>> True and False
False
>>> False and False
False
>>> True or False
True
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB