Форум сайта python.su
Тут фишка в том, что люди испорченные всякими сями ждут, что результатом логического выражения будет логическое значение - то есть если мы используем логический оператор между “значениями” - то результат должен быть булевый.
Нечто & Нечто должно дать True или False.
Да нифига. Синие & Белое возвращает или Синее или Белое.
А если Белое & Синее & Красное & Пурпуное
То одно из них, но не True или False
Отредактировано FishHook (Ноя. 23, 2013 19:56:14)
Офлайн
FishHook
А если Белое & Синее & Красное & Пурпуное
То одно из них, но не True или False
int n;
n = 0;
n += a || b || (c && d);
Отредактировано py.user.next (Ноя. 23, 2013 20:28:12)
Офлайн
FishHook, я ответил правильно, но решил проверить старой доброй копипастой…
>>> print 1 and [1,2,3] and dict() and False
File "<stdin>", line 1
print 1 and [1,2,3] and dict() and False
^
SyntaxError: invalid syntax
Офлайн
пффффф
Отредактировано FishHook (Ноя. 23, 2013 22:09:14)
Офлайн
ZZZ
третий питон ?
Офлайн
Singularity, это был вопрос новичкам… А вот FishHook с ответом не справился, с чем мы его торжественно и поздравляем! :-)
Офлайн
ZZZДа я не понял юмора сразу то, уже исправился, подумал опять я не в тему сказанул
Singularity, это был вопрос новичкам… А вот FishHook с ответом не справился, с чем мы его торжественно и поздравляем! :-)
Офлайн
не то что бы чудо, да и наверняка найдется объяснение, но меня с толку сбило:
import struct struct.calcsize('si') 8 struct.calcsize('<si') 5 struct.calcsize('>si') 5
Офлайн
В общем то в доках написано что по умолчанию используется префикс @, и насколько я понял, размер данных всегда дополняется до машинного слова т.е. в случае выше до кратных 4 байт, определяемых архитектурой
Офлайн
Занятно. Как-то не думал и не обращал внимание, что в `struct` ещё и выравнивание применяется.
Опасная вещь.
>>> struct.pack('bi', 1, 2) '\x01\x00\x00\x00\x02\x00\x00\x00' >>> struct.pack('<bi', 1, 2) '\x01\x02\x00\x00\x00'
Офлайн