Форум сайта python.su
47
bot1netвсе элементы в этом контексте считаются, либо True, либо False, так-что нарушения нет
Насколько, по вашему мнению, правомерно связывать ими элементы
Офлайн
0
bismigalis, но по какой причине тогда мы имеем следующий результат:
>>> (1 and 2 and 3) == 3 True >>> (1 and 3 and 2) == 3 False
Офлайн
47
в документации написано что and и or являются short-circuit операциями, я не знаю как это перевести, но смысл в том что операнды эвалуируются по порядку.
и поэтому
1 and 2 and 3
if bool(1) == True: if bool(2) == True: if bool(3) == True: return 3
1 and 3 and 2
if bool(1) == True: if bool(3) == True: if bool(2) == True: return 2
Отредактировано bismigalis (Апрель 27, 2013 20:46:33)
Офлайн
0
bismigalis, прояснилось, благодарю!
Офлайн
0
bismigalis, а как вы это прокомментируете?
>>> 1 == True True >>> 2 == True False >>> 3 == True False >>> 1111111 == True False
Офлайн
0
Небольшое замечание. Моя позиция такова, что булевы операторы можно использовать только для выражений, результатом оценки которых будут булевы же значения, по причинам, указанным выше. Никаких 10005000 == True быть не должно, поскольку 10005000 не принадлежит множеству, над которым введена булева алгебра, всего то
Проблема для меня в том, что представляется затруднительным написать
if a and b and c == d: print 'ok'
if a == b == c == d: print 'ok'
Отредактировано bot1net (Апрель 27, 2013 20:39:54)
Офлайн
47
то был псевдокод ), поправил пост
Отредактировано bismigalis (Апрель 27, 2013 20:47:02)
Офлайн
47
bot1net
а как вы это прокомментируете?
>>> 1 == True
True
>>> 2 == True
False
>>> 3 == True
False
>>> 1111111 == True
False
1 == int(True) 2 == int(True) 3 == int(True)
Офлайн
47
bot1netпо приведенной мной ссылке, есть табличка, там много языков с таким поведением(в последнем столбце стоит Boolean), выбирай любой
Моя позиция такова, что булевы операторы можно использовать только для выражений, результатом оценки которых будут булевы же значения
Офлайн
253
bot1netМожет пора взглянуть на проблему с другой стороны. А зачем вам это надо:
Небольшое замечание. Моя позиция такова….
(1 and 2 and 3) == 3
open F, "< $f" or die "Can't open $f : $!";
Отредактировано doza_and (Апрель 27, 2013 21:16:02)
Офлайн