Форум сайта python.su
253
Все равно не понятно чему вы удивляетесь
В соответствии с приоритетами 0==0 это True
1 and True >>> True 1 or True >>> 1
Офлайн
7
bot1net
doza_and так утверждение верно, но он пишет ложь… Статью на википедии пересмотрел, возвращаемый результат неверный.
Когнитивный диссонанс у меня, однако.
>>> 1 and 0 == 0
True
>>> 1 or 0 == 0
1
Офлайн
0
and вынужден вычислить все и возвращает последний.То есть он вычисляет истинность/ложность каждого аргумента, но вернет последний. Спасибо огромное, теперь понятно
Просто я думал, что он должен вычислить истинность/ложность всего выражения… И черт возьми, про приоритет операций не помню, либо не писали, либо пропустил…
Отредактировано bot1net (Апрель 27, 2013 12:02:40)
Офлайн
0
А как быть со скобками? Выходит на приоритет они не влияют?
>>> (1 and 2 and 3) == 3 True
Отредактировано bot1net (Апрель 27, 2013 12:28:27)
Офлайн
568
bot1netКокда интерпретируются логические операции, питон приводит целочисленные значения к булевым.
А как быть со скобками? Выходит на приоритет они не влияют?
(1 and 2 and 3) == 3
Отредактировано FishHook (Апрель 27, 2013 13:30:07)
Офлайн
0
FishHook, примем каждое целое число, не равное нулю как однозначно соответствующему булеву true, а нуль - булеву false, тогда всякая конъюнкция будет истинной, если в ней отсутствует нуль. Мое утверждение правильно интерпретирует то, что вы имели ввиду?
Офлайн
16
bot1net
Если хотите раз и навсегда понять суть данных понятий, обратитесь к главе 9 книги Лутца “Изучаем Python. Четвертое издание” (2011 год), а именно к части “Смысл понятий «истина» и «ложь» в языке Python” (стр. 308). Всё описано очень доступно в одну страницу. Думаю, после прочтения данной страницы ваши вопросы про true/false будут неактуальны.
Отредактировано alexbadaloff (Апрель 27, 2013 16:15:13)
Офлайн
253
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]
Отредактировано doza_and (Апрель 27, 2013 16:44:35)
Офлайн
0
doza_and, вот, собственно, от чего у меня и произошел когнитивный диссонанс…
alexbadaloff, спасибо за рекомендацию, обязательно прочитаю
Офлайн
0
Язык программирования 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
Отредактировано bot1net (Апрель 27, 2013 18:50:32)
Офлайн